From 33fbce1ff76c8c1577f424263fb91fd22f1e1271 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 12 Sep 2015 17:05:12 +0900 Subject: [PATCH 001/265] nodeWillIndentChild from #4609 --- src/services/formatting/formatting.ts | 36 +++++++----------------- src/services/formatting/smartIndenter.ts | 36 +++++++++++++++++------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index fad3ebe6e2b..868683bb6af 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -282,19 +282,19 @@ namespace ts.formatting { */ function getOwnOrInheritedDelta(n: Node, options: FormatCodeOptions, sourceFile: SourceFile): number { let previousLine = Constants.Unknown; - let childKind = SyntaxKind.Unknown; + let child: Node = null; while (n) { let line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== Constants.Unknown && line !== previousLine) { break; } - if (SmartIndenter.shouldIndentChildNode(n.kind, childKind)) { + if (SmartIndenter.shouldIndentChildNode(n, child)) { return options.IndentSize; } previousLine = line; - childKind = n.kind; + child = n; n = n.parent; } return 0; @@ -387,33 +387,17 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (isSomeBlock(node.kind)) { - // blocks should be indented in - // - other blocks - // - source file - // - switch\default clauses - if (isSomeBlock(parent.kind) || - parent.kind === SyntaxKind.SourceFile || - parent.kind === SyntaxKind.CaseClause || - parent.kind === SyntaxKind.DefaultClause) { + if (SmartIndenter.shouldInheritParentIndentation(parent, node) || + SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - else { - indentation = parentDynamicIndentation.getIndentation(); - } + indentation = parentDynamicIndentation.getIndentation(); } else { - if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation(); - } - else { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); } } - var delta = SmartIndenter.shouldIndentChildNode(node.kind, SyntaxKind.Unknown) ? options.IndentSize : 0; + var delta = SmartIndenter.shouldIndentChildNode(node, null) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { // if node is located on the same line with the parent @@ -495,7 +479,7 @@ namespace ts.formatting { getIndentation: () => indentation, getDelta: () => delta, recomputeIndentation: lineAdded => { - if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent.kind, node.kind)) { + if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { indentation += options.IndentSize; } @@ -503,7 +487,7 @@ namespace ts.formatting { indentation -= options.IndentSize; } - if (SmartIndenter.shouldIndentChildNode(node.kind, SyntaxKind.Unknown)) { + if (SmartIndenter.shouldIndentChildNode(node, null)) { delta = options.IndentSize; } else { diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 8355fac03f5..ab23f3da939 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -48,7 +48,7 @@ namespace ts.formatting { let indentationDelta: number; while (current) { - if (positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current.kind, previous ? previous.kind : SyntaxKind.Unknown)) { + if (positionBelongsToNode(current, position, sourceFile) && shouldIndentChildNode(current, previous)) { currentStart = getStartLineAndCharacterForNode(current, sourceFile); if (nextTokenIsCurlyBraceOnSameLineAsCursor(precedingToken, current, lineAtPosition, sourceFile)) { @@ -133,7 +133,7 @@ namespace ts.formatting { } // increase indentation if parent node wants its content to be indented and parent and child nodes don't start on the same line - if (shouldIndentChildNode(parent.kind, current.kind) && !parentAndChildShareLine) { + if (shouldIndentChildNode(parent, current) && !parentAndChildShareLine) { indentationDelta += options.IndentSize; } @@ -446,11 +446,12 @@ namespace ts.formatting { return false; } - export function shouldIndentChildNode(parent: SyntaxKind, child: SyntaxKind): boolean { - if (nodeContentIsAlwaysIndented(parent)) { - return true; - } - switch (parent) { + /** + * Function returns true when a node with conditional indentation rule will indent certain child node. + */ + function nodeWillIndentChild(parent: TextRangeWithKind, child: TextRangeWithKind, indentByDefault: boolean) { + let childKind = child ? child.kind : SyntaxKind.Unknown; + switch (parent.kind) { case SyntaxKind.DoStatement: case SyntaxKind.WhileStatement: case SyntaxKind.ForInStatement: @@ -464,10 +465,25 @@ namespace ts.formatting { case SyntaxKind.Constructor: case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: - return child !== SyntaxKind.Block; - default: - return false; + return childKind !== SyntaxKind.Block; } + // No explicit rule for selected nodes, so result will follow the default value argument. + return indentByDefault; + } + + export function shouldIndentChildNode(parent: TextRangeWithKind, child: TextRangeWithKind): boolean { + if (nodeContentIsAlwaysIndented(parent.kind)) { + return true; + } + return nodeWillIndentChild(parent, child, false); + } + + /** + * Function returns true if a node should not get additional indentation in its parent node. + */ + export function shouldInheritParentIndentation(parent: TextRangeWithKind, child: TextRangeWithKind): boolean { + // Check if + return !nodeWillIndentChild(parent, child, true); } } } \ No newline at end of file From 07fbf8bfd1358a9048c6af3d2742b0decc461ee4 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sat, 12 Sep 2015 17:31:12 +0900 Subject: [PATCH 002/265] Fix some comments --- src/services/formatting/smartIndenter.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index ab23f3da939..4477ea760bb 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -447,7 +447,7 @@ namespace ts.formatting { } /** - * Function returns true when a node with conditional indentation rule will indent certain child node. + * Function returns true when a node with conditional indentation rule will indent certain child node */ function nodeWillIndentChild(parent: TextRangeWithKind, child: TextRangeWithKind, indentByDefault: boolean) { let childKind = child ? child.kind : SyntaxKind.Unknown; @@ -467,7 +467,7 @@ namespace ts.formatting { case SyntaxKind.SetAccessor: return childKind !== SyntaxKind.Block; } - // No explicit rule for selected nodes, so result will follow the default value argument. + // No explicit rule for selected nodes, so result will follow the default value argument return indentByDefault; } @@ -479,10 +479,11 @@ namespace ts.formatting { } /** - * Function returns true if a node should not get additional indentation in its parent node. + * Function returns true if existing node content indentation should be suppressed for a specific child */ export function shouldInheritParentIndentation(parent: TextRangeWithKind, child: TextRangeWithKind): boolean { - // Check if + // Consider parents without indentation rules can indent their children + // so that they can apply inherited delta value to them return !nodeWillIndentChild(parent, child, true); } } From f2329846cbc52074f9eb0affaecae2e406880dd5 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sun, 13 Sep 2015 04:02:18 +0900 Subject: [PATCH 003/265] apply suppression to tokens --- src/services/formatting/formatting.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 868683bb6af..8a713dc032c 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -387,9 +387,7 @@ namespace ts.formatting { let indentation = inheritedIndentation; if (indentation === Constants.Unknown) { - if (SmartIndenter.shouldInheritParentIndentation(parent, node) || - SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - + if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { indentation = parentDynamicIndentation.getIndentation(); } else { @@ -590,6 +588,10 @@ namespace ts.formatting { return inheritedIndentation; } + if (SmartIndenter.shouldInheritParentIndentation(parent, child)) { + parentDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation, 0); + } + if (isToken(child)) { // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules let tokenInfo = formattingScanner.readTokenInfo(child); From 46c8af10245751fc51880191a559a1ae27706115 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sun, 13 Sep 2015 07:47:16 +0900 Subject: [PATCH 004/265] make getDelta call suppressor --- src/services/formatting/formatting.ts | 35 +++++++++++++++------------ 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 8a713dc032c..5d4938498e4 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -54,7 +54,7 @@ namespace ts.formatting { * so bar inherits indentation from foo and bar.delta will be 4 * */ - getDelta(): number; + getDelta(child: TextRangeWithKind): number; /** * Formatter calls this function when rule adds or deletes new lines from the text * so indentation scope can adjust values of indentation and delta. @@ -386,15 +386,6 @@ namespace ts.formatting { effectiveParentStartLine: number): Indentation { let indentation = inheritedIndentation; - if (indentation === Constants.Unknown) { - if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { - indentation = parentDynamicIndentation.getIndentation(); - } - else { - indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); - } - } - var delta = SmartIndenter.shouldIndentChildNode(node, null) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { @@ -404,8 +395,17 @@ namespace ts.formatting { indentation = startLine === lastIndentedLine ? indentationOnLastIndentedLine : parentDynamicIndentation.getIndentation(); - delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta() + delta); + delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta(node) + delta); } + else if (indentation === Constants.Unknown) { + if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(node); + } + } + return { indentation, delta @@ -475,7 +475,14 @@ namespace ts.formatting { } }, getIndentation: () => indentation, - getDelta: () => delta, + getDelta: (child: TextRangeWithKind) => { + if (SmartIndenter.shouldInheritParentIndentation(node, child)) { + return 0; + } + else { + return delta; + } + }, recomputeIndentation: lineAdded => { if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { @@ -588,10 +595,6 @@ namespace ts.formatting { return inheritedIndentation; } - if (SmartIndenter.shouldInheritParentIndentation(parent, child)) { - parentDynamicIndentation = getDynamicIndentation(parent, parentStartLine, indentation, 0); - } - if (isToken(child)) { // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules let tokenInfo = formattingScanner.readTokenInfo(child); From 4d1c067d752cd165ce2b69545629621033b93e4c Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sun, 13 Sep 2015 16:01:32 +0900 Subject: [PATCH 005/265] use undefined instead of null --- src/services/formatting/formatting.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 5d4938498e4..eeebfd1649d 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -282,7 +282,7 @@ namespace ts.formatting { */ function getOwnOrInheritedDelta(n: Node, options: FormatCodeOptions, sourceFile: SourceFile): number { let previousLine = Constants.Unknown; - let child: Node = null; + let child: Node; while (n) { let line = sourceFile.getLineAndCharacterOfPosition(n.getStart(sourceFile)).line; if (previousLine !== Constants.Unknown && line !== previousLine) { From b2cfddbe7a30c05ebac112af556974fa16913a9e Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Sun, 13 Sep 2015 23:42:24 +0900 Subject: [PATCH 006/265] re-fix token indentation --- src/services/formatting/formatting.ts | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index eeebfd1649d..9f300f1db7a 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -60,6 +60,11 @@ namespace ts.formatting { * so indentation scope can adjust values of indentation and delta. */ recomputeIndentation(lineAddedByFormatting: boolean): void; + + /** + * Returns DynamicIndentation object that includes modified delta value for specific child node. + */ + getCopyForSpecificChild(child: Node): DynamicIndentation; } interface Indentation { @@ -475,14 +480,7 @@ namespace ts.formatting { } }, getIndentation: () => indentation, - getDelta: (child: TextRangeWithKind) => { - if (SmartIndenter.shouldInheritParentIndentation(node, child)) { - return 0; - } - else { - return delta; - } - }, + getDelta: (child) => (!delta || SmartIndenter.shouldInheritParentIndentation(node, child)) ? 0 : delta, recomputeIndentation: lineAdded => { if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { @@ -500,6 +498,13 @@ namespace ts.formatting { } } }, + getCopyForSpecificChild(child) { + if (!delta) { + // delta value is already 0, so do not copy + return this; + } + return getDynamicIndentation(node, nodeStartLine, indentation, (this).getDelta(child)); + } } } @@ -599,7 +604,7 @@ namespace ts.formatting { // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules let tokenInfo = formattingScanner.readTokenInfo(child); Debug.assert(tokenInfo.token.end === child.end); - consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation.getCopyForSpecificChild(child)); return inheritedIndentation; } From 3dd7caafbfc0bf2cf15d910c27c585cd8237ae8e Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Tue, 22 Sep 2015 15:07:44 +0900 Subject: [PATCH 007/265] no null --- src/services/formatting/formatting.ts | 4 ++-- src/services/formatting/smartIndenter.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 9f300f1db7a..412daaa8ab0 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -391,7 +391,7 @@ namespace ts.formatting { effectiveParentStartLine: number): Indentation { let indentation = inheritedIndentation; - var delta = SmartIndenter.shouldIndentChildNode(node, null) ? options.IndentSize : 0; + var delta = SmartIndenter.shouldIndentChildNode(node) ? options.IndentSize : 0; if (effectiveParentStartLine === startLine) { // if node is located on the same line with the parent @@ -490,7 +490,7 @@ namespace ts.formatting { indentation -= options.IndentSize; } - if (SmartIndenter.shouldIndentChildNode(node, null)) { + if (SmartIndenter.shouldIndentChildNode(node)) { delta = options.IndentSize; } else { diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 4477ea760bb..dfe94b3fdbb 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -471,7 +471,7 @@ namespace ts.formatting { return indentByDefault; } - export function shouldIndentChildNode(parent: TextRangeWithKind, child: TextRangeWithKind): boolean { + export function shouldIndentChildNode(parent: TextRangeWithKind, child?: TextRangeWithKind): boolean { if (nodeContentIsAlwaysIndented(parent.kind)) { return true; } From f9e8d9562d91af7a77454b40d60c28162dac9079 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Tue, 22 Sep 2015 16:32:24 +0900 Subject: [PATCH 008/265] slight condition change for getDelta --- src/services/formatting/formatting.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 412daaa8ab0..4995fb34b54 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -480,7 +480,7 @@ namespace ts.formatting { } }, getIndentation: () => indentation, - getDelta: (child) => (!delta || SmartIndenter.shouldInheritParentIndentation(node, child)) ? 0 : delta, + getDelta: (child) => (delta && SmartIndenter.shouldInheritParentIndentation(node, child)) ? 0 : delta, recomputeIndentation: lineAdded => { if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { From f53f70d79e2ca35f3b653ee90a0b10152931073b Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Tue, 29 Sep 2015 16:09:07 +0900 Subject: [PATCH 009/265] getEffectiveDelta --- src/services/formatting/formatting.ts | 76 ++++++++++++--------------- 1 file changed, 34 insertions(+), 42 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 4995fb34b54..0bd2a47bb1e 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -31,8 +31,8 @@ namespace ts.formatting { * the first token in line so it should be indented */ interface DynamicIndentation { - getIndentationForToken(tokenLine: number, tokenKind: SyntaxKind): number; - getIndentationForComment(owningToken: SyntaxKind, tokenIndentation: number): number; + getIndentationForToken(tokenLine: number, tokenKind: SyntaxKind, container: Node): number; + getIndentationForComment(owningToken: SyntaxKind, tokenIndentation: number, container: Node): number; /** * Indentation for open and close tokens of the node if it is block or another node that needs special indentation * ... { @@ -60,11 +60,6 @@ namespace ts.formatting { * so indentation scope can adjust values of indentation and delta. */ recomputeIndentation(lineAddedByFormatting: boolean): void; - - /** - * Returns DynamicIndentation object that includes modified delta value for specific child node. - */ - getCopyForSpecificChild(child: Node): DynamicIndentation; } interface Indentation { @@ -330,7 +325,7 @@ namespace ts.formatting { let lastIndentedLine: number; let indentationOnLastIndentedLine: number; - + let edits: TextChange[] = []; formattingScanner.advance(); @@ -359,12 +354,12 @@ namespace ts.formatting { * If list element is in the range - its indentation will be equal * to inherited indentation from its predecessors. */ - function tryComputeIndentationForListItem(startPos: number, - endPos: number, - parentStartLine: number, - range: TextRange, + function tryComputeIndentationForListItem(startPos: number, + endPos: number, + parentStartLine: number, + range: TextRange, inheritedIndentation: number): number { - + if (rangeOverlapsWithStartEnd(range, startPos, endPos)) { if (inheritedIndentation !== Constants.Unknown) { return inheritedIndentation; @@ -381,7 +376,7 @@ namespace ts.formatting { return Constants.Unknown; } - + function computeIndentation( node: TextRangeWithKind, startLine: number, @@ -397,8 +392,8 @@ namespace ts.formatting { // if node is located on the same line with the parent // - inherit indentation from the parent // - push children if either parent of node itself has non-zero delta - indentation = startLine === lastIndentedLine - ? indentationOnLastIndentedLine + indentation = startLine === lastIndentedLine + ? indentationOnLastIndentedLine : parentDynamicIndentation.getIndentation(); delta = Math.min(options.IndentSize, parentDynamicIndentation.getDelta(node) + delta); } @@ -442,7 +437,7 @@ namespace ts.formatting { function getDynamicIndentation(node: Node, nodeStartLine: number, indentation: number, delta: number): DynamicIndentation { return { - getIndentationForComment: (kind, tokenIndentation) => { + getIndentationForComment: (kind, tokenIndentation, container) => { switch (kind) { // preceding comment to the token that closes the indentation scope inherits the indentation from the scope // .. { @@ -451,11 +446,11 @@ namespace ts.formatting { case SyntaxKind.CloseBraceToken: case SyntaxKind.CloseBracketToken: case SyntaxKind.CloseParenToken: - return indentation + delta; + return indentation + getEffectiveDelta(delta, container); } return tokenIndentation !== Constants.Unknown ? tokenIndentation : indentation; }, - getIndentationForToken: (line, kind) => { + getIndentationForToken: (line, kind, container) => { if (nodeStartLine !== line && node.decorators) { if (kind === getFirstNonDecoratorTokenOfNode(node)) { // if this token is the first token following the list of decorators, we do not need to indent @@ -476,11 +471,11 @@ namespace ts.formatting { return indentation; default: // if token line equals to the line of containing node (this is a first token in the node) - use node indentation - return nodeStartLine !== line ? indentation + delta : indentation; + return nodeStartLine !== line ? indentation + getEffectiveDelta(delta, container) : indentation; } }, getIndentation: () => indentation, - getDelta: (child) => (delta && SmartIndenter.shouldInheritParentIndentation(node, child)) ? 0 : delta, + getDelta: (child) => getEffectiveDelta(delta, child), recomputeIndentation: lineAdded => { if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { @@ -497,15 +492,12 @@ namespace ts.formatting { delta = 0; } } - }, - getCopyForSpecificChild(child) { - if (!delta) { - // delta value is already 0, so do not copy - return this; - } - return getDynamicIndentation(node, nodeStartLine, indentation, (this).getDelta(child)); } } + + function getEffectiveDelta(delta: number, child: TextRangeWithKind) { + return SmartIndenter.shouldInheritParentIndentation(node, child) ? 0 : delta; + } } function processNode(node: Node, contextNode: Node, nodeStartLine: number, undecoratedNodeStartLine: number, indentation: number, delta: number) { @@ -580,7 +572,7 @@ namespace ts.formatting { if (!rangeOverlapsWithStartEnd(originalRange, child.pos, child.end)) { return inheritedIndentation; } - + if (child.getFullWidth() === 0) { return inheritedIndentation; } @@ -604,7 +596,7 @@ namespace ts.formatting { // if child node is a token, it does not impact indentation, proceed it using parent indentation scope rules let tokenInfo = formattingScanner.readTokenInfo(child); Debug.assert(tokenInfo.token.end === child.end); - consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation.getCopyForSpecificChild(child)); + consumeTokenAndAdvanceScanner(tokenInfo, node, parentDynamicIndentation, child); return inheritedIndentation; } @@ -618,8 +610,8 @@ namespace ts.formatting { return inheritedIndentation; } - function processChildNodes(nodes: NodeArray, - parent: Node, + function processChildNodes(nodes: NodeArray, + parent: Node, parentStartLine: number, parentDynamicIndentation: DynamicIndentation): void { @@ -673,7 +665,7 @@ namespace ts.formatting { } } - function consumeTokenAndAdvanceScanner(currentTokenInfo: TokenInfo, parent: Node, dynamicIndentation: DynamicIndentation): void { + function consumeTokenAndAdvanceScanner(currentTokenInfo: TokenInfo, parent: Node, dynamicIndentation: DynamicIndentation, container?: Node): void { Debug.assert(rangeContainsRange(parent, currentTokenInfo.token)); let lastTriviaWasNewLine = formattingScanner.lastTrailingTriviaWasNewLine(); @@ -712,11 +704,11 @@ namespace ts.formatting { if (indentToken) { let tokenIndentation = (isTokenInRange && !rangeContainsError(currentTokenInfo.token)) ? - dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind) : + dynamicIndentation.getIndentationForToken(tokenStart.line, currentTokenInfo.token.kind, container) : Constants.Unknown; if (currentTokenInfo.leadingTrivia) { - let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation); + let commentIndentation = dynamicIndentation.getIndentationForComment(currentTokenInfo.token.kind, tokenIndentation, container); let indentNextTokenOrTrivia = true; for (let triviaItem of currentTokenInfo.leadingTrivia) { @@ -745,7 +737,7 @@ namespace ts.formatting { // indent token only if is it is in target range and does not overlap with any error ranges if (tokenIndentation !== Constants.Unknown) { insertIndentation(currentTokenInfo.token.pos, tokenIndentation, lineAdded); - + lastIndentedLine = tokenStart.line; indentationOnLastIndentedLine = tokenIndentation; } @@ -766,12 +758,12 @@ namespace ts.formatting { } } - function processRange(range: TextRangeWithKind, - rangeStart: LineAndCharacter, - parent: Node, - contextNode: Node, + function processRange(range: TextRangeWithKind, + rangeStart: LineAndCharacter, + parent: Node, + contextNode: Node, dynamicIndentation: DynamicIndentation): boolean { - + let rangeHasError = rangeContainsError(range); let lineAdded: boolean; if (!rangeHasError && !previousRangeHasError) { @@ -781,7 +773,7 @@ namespace ts.formatting { trimTrailingWhitespacesForLines(originalStart.line, rangeStart.line); } else { - lineAdded = + lineAdded = processPair(range, rangeStart.line, parent, previousRange, previousRangeStartLine, previousParent, contextNode, dynamicIndentation) } } From 9eb85e21731e5516f45b4e00e0fc0127002ad2c6 Mon Sep 17 00:00:00 2001 From: SaschaNaz Date: Tue, 29 Sep 2015 19:50:42 +0900 Subject: [PATCH 010/265] remove parens --- src/services/formatting/formatting.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index 0bd2a47bb1e..7d559f99464 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -475,7 +475,7 @@ namespace ts.formatting { } }, getIndentation: () => indentation, - getDelta: (child) => getEffectiveDelta(delta, child), + getDelta: child => getEffectiveDelta(delta, child), recomputeIndentation: lineAdded => { if (node.parent && SmartIndenter.shouldIndentChildNode(node.parent, node)) { if (lineAdded) { From 32b1ad36ecd2018c61fc42d133e1235517543d61 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Sun, 4 Oct 2015 22:00:57 -0700 Subject: [PATCH 011/265] do not emit exportsStar function if module does not expose any values --- src/compiler/checker.ts | 30 ++++++++++- src/compiler/emitter.ts | 38 +++++++------ src/compiler/types.ts | 2 + .../reference/es6ExportEqualsInterop.js | 1 - .../exportDeclarationInInternalModule.js | 2 +- .../reference/exportStarForValues.js | 17 ++++++ .../reference/exportStarForValues.symbols | 11 ++++ .../reference/exportStarForValues.types | 11 ++++ .../reference/exportStarForValues10.js | 52 ++++++++++++++++++ .../reference/exportStarForValues10.symbols | 16 ++++++ .../reference/exportStarForValues10.types | 18 +++++++ .../reference/exportStarForValues2.js | 25 +++++++++ .../reference/exportStarForValues2.symbols | 16 ++++++ .../reference/exportStarForValues2.types | 18 +++++++ .../reference/exportStarForValues3.js | 45 ++++++++++++++++ .../reference/exportStarForValues3.symbols | 39 ++++++++++++++ .../reference/exportStarForValues3.types | 43 +++++++++++++++ .../reference/exportStarForValues4.js | 29 ++++++++++ .../reference/exportStarForValues4.symbols | 25 +++++++++ .../reference/exportStarForValues4.types | 27 ++++++++++ .../reference/exportStarForValues5.js | 16 ++++++ .../reference/exportStarForValues5.symbols | 11 ++++ .../reference/exportStarForValues5.types | 11 ++++ .../reference/exportStarForValues6.js | 28 ++++++++++ .../reference/exportStarForValues6.symbols | 11 ++++ .../reference/exportStarForValues6.types | 12 +++++ .../reference/exportStarForValues7.js | 29 ++++++++++ .../reference/exportStarForValues7.symbols | 16 ++++++ .../reference/exportStarForValues7.types | 18 +++++++ .../reference/exportStarForValues8.js | 54 +++++++++++++++++++ .../reference/exportStarForValues8.symbols | 39 ++++++++++++++ .../reference/exportStarForValues8.types | 43 +++++++++++++++ .../reference/exportStarForValues9.js | 37 +++++++++++++ .../reference/exportStarForValues9.symbols | 25 +++++++++ .../reference/exportStarForValues9.types | 27 ++++++++++ .../reference/exportStarForValuesInSystem.js | 28 ++++++++++ .../exportStarForValuesInSystem.symbols | 11 ++++ .../exportStarForValuesInSystem.types | 12 +++++ .../reference/moduleElementsInWrongContext.js | 1 - .../moduleElementsInWrongContext2.js | 1 - .../moduleElementsInWrongContext3.js | 1 - tests/cases/compiler/exportStarForValues.ts | 8 +++ tests/cases/compiler/exportStarForValues10.ts | 12 +++++ tests/cases/compiler/exportStarForValues2.ts | 12 +++++ tests/cases/compiler/exportStarForValues3.ts | 24 +++++++++ tests/cases/compiler/exportStarForValues4.ts | 15 ++++++ tests/cases/compiler/exportStarForValues5.ts | 8 +++ tests/cases/compiler/exportStarForValues6.ts | 8 +++ tests/cases/compiler/exportStarForValues7.ts | 12 +++++ tests/cases/compiler/exportStarForValues8.ts | 24 +++++++++ tests/cases/compiler/exportStarForValues9.ts | 15 ++++++ .../compiler/exportStarForValuesInSystem.ts | 8 +++ 52 files changed, 1020 insertions(+), 22 deletions(-) create mode 100644 tests/baselines/reference/exportStarForValues.js create mode 100644 tests/baselines/reference/exportStarForValues.symbols create mode 100644 tests/baselines/reference/exportStarForValues.types create mode 100644 tests/baselines/reference/exportStarForValues10.js create mode 100644 tests/baselines/reference/exportStarForValues10.symbols create mode 100644 tests/baselines/reference/exportStarForValues10.types create mode 100644 tests/baselines/reference/exportStarForValues2.js create mode 100644 tests/baselines/reference/exportStarForValues2.symbols create mode 100644 tests/baselines/reference/exportStarForValues2.types create mode 100644 tests/baselines/reference/exportStarForValues3.js create mode 100644 tests/baselines/reference/exportStarForValues3.symbols create mode 100644 tests/baselines/reference/exportStarForValues3.types create mode 100644 tests/baselines/reference/exportStarForValues4.js create mode 100644 tests/baselines/reference/exportStarForValues4.symbols create mode 100644 tests/baselines/reference/exportStarForValues4.types create mode 100644 tests/baselines/reference/exportStarForValues5.js create mode 100644 tests/baselines/reference/exportStarForValues5.symbols create mode 100644 tests/baselines/reference/exportStarForValues5.types create mode 100644 tests/baselines/reference/exportStarForValues6.js create mode 100644 tests/baselines/reference/exportStarForValues6.symbols create mode 100644 tests/baselines/reference/exportStarForValues6.types create mode 100644 tests/baselines/reference/exportStarForValues7.js create mode 100644 tests/baselines/reference/exportStarForValues7.symbols create mode 100644 tests/baselines/reference/exportStarForValues7.types create mode 100644 tests/baselines/reference/exportStarForValues8.js create mode 100644 tests/baselines/reference/exportStarForValues8.symbols create mode 100644 tests/baselines/reference/exportStarForValues8.types create mode 100644 tests/baselines/reference/exportStarForValues9.js create mode 100644 tests/baselines/reference/exportStarForValues9.symbols create mode 100644 tests/baselines/reference/exportStarForValues9.types create mode 100644 tests/baselines/reference/exportStarForValuesInSystem.js create mode 100644 tests/baselines/reference/exportStarForValuesInSystem.symbols create mode 100644 tests/baselines/reference/exportStarForValuesInSystem.types create mode 100644 tests/cases/compiler/exportStarForValues.ts create mode 100644 tests/cases/compiler/exportStarForValues10.ts create mode 100644 tests/cases/compiler/exportStarForValues2.ts create mode 100644 tests/cases/compiler/exportStarForValues3.ts create mode 100644 tests/cases/compiler/exportStarForValues4.ts create mode 100644 tests/cases/compiler/exportStarForValues5.ts create mode 100644 tests/cases/compiler/exportStarForValues6.ts create mode 100644 tests/cases/compiler/exportStarForValues7.ts create mode 100644 tests/cases/compiler/exportStarForValues8.ts create mode 100644 tests/cases/compiler/exportStarForValues9.ts create mode 100644 tests/cases/compiler/exportStarForValuesInSystem.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 663825f1e84..18e76f46d72 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14493,6 +14493,33 @@ namespace ts { // Emitter support + function moduleExportsSomeValue(moduleReferenceExpression: Expression): boolean { + let moduleSymbol = resolveExternalModuleName(moduleReferenceExpression.parent, moduleReferenceExpression); + if (!moduleSymbol) { + // module not found - be conservative + return true; + } + + const hasExportAssignment = getExportAssignmentSymbol(moduleSymbol) !== undefined; + moduleSymbol = resolveExternalModuleSymbol(moduleSymbol); + + const symbolLinks = getSymbolLinks(moduleSymbol); + if (symbolLinks.exportsSomeValue == undefined) { + // for export assignments - check if resolved symbol for RHS is itself a value + // otherwise - check if at least one export is value + symbolLinks.exportsSomeValue = hasExportAssignment + ? !!(moduleSymbol.flags & SymbolFlags.Value) + : forEachValue(getExportsOfModule(moduleSymbol), isValue); + } + + return symbolLinks.exportsSomeValue; + + function isValue(s: Symbol): boolean { + s = resolveSymbol(s); + return s && !!(s.flags & SymbolFlags.Value); + } + } + // When resolved as an expression identifier, if the given node references an exported entity, return the declaration // node of the exported entity's container. Otherwise, return undefined. function getReferencedExportContainer(node: Identifier): SourceFile | ModuleDeclaration | EnumDeclaration { @@ -14823,7 +14850,8 @@ namespace ts { getBlockScopedVariableId, getReferencedValueDeclaration, getTypeReferenceSerializationKind, - isOptionalParameter + isOptionalParameter, + moduleExportsSomeValue }; } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 11942562dcb..bf670bd2c42 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -406,7 +406,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi let externalImports: (ImportDeclaration | ImportEqualsDeclaration | ExportDeclaration)[]; let exportSpecifiers: Map; let exportEquals: ExportAssignment; - let hasExportStars: boolean; + let hasExportStarsToExportValues: boolean; /** Write emitted output to disk */ let writeEmittedFiles = writeJavaScriptFile; @@ -5892,15 +5892,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else { // export * from "foo" - writeLine(); - write("__export("); - if (modulekind !== ModuleKind.AMD) { - emitRequire(getExternalModuleName(node)); + if (hasExportStarsToExportValues && resolver.moduleExportsSomeValue(node.moduleSpecifier)) { + writeLine(); + write("__export("); + if (modulekind !== ModuleKind.AMD) { + emitRequire(getExternalModuleName(node)); + } + else { + write(generatedName); + } + write(");"); } - else { - write(generatedName); - } - write(");"); } emitEnd(node); } @@ -5988,7 +5990,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi externalImports = []; exportSpecifiers = {}; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; for (let node of sourceFile.statements) { switch (node.kind) { case SyntaxKind.ImportDeclaration: @@ -6011,8 +6013,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if ((node).moduleSpecifier) { if (!(node).exportClause) { // export * from "mod" - externalImports.push(node); - hasExportStars = true; + if (resolver.moduleExportsSomeValue((node).moduleSpecifier)) { + externalImports.push(node); + hasExportStarsToExportValues = true; + } } else if (resolver.isValueAliasDeclaration(node)) { // export { x, y } from "mod" where at least one export is a value symbol @@ -6038,7 +6042,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } function emitExportStarHelper() { - if (hasExportStars) { + if (hasExportStarsToExportValues) { writeLine(); write("function __export(m) {"); increaseIndent(); @@ -6110,7 +6114,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // should always win over entries with similar names that were added via star exports // to support this we store names of local/indirect exported entries in a set. // this set is used to filter names brought by star expors. - if (!hasExportStars) { + if (!hasExportStarsToExportValues) { // local names set is needed only in presence of star exports return undefined; } @@ -6535,6 +6539,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi write("});"); } else { + // collectExternalModuleInfo prefilters star exports to keep only ones that export values + // this means that check 'resolver.moduleExportsSomeValue' is redundant and can be omitted here writeLine(); // export * from 'foo' // emit as: @@ -6796,7 +6802,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); @@ -6996,7 +7002,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = false; + hasExportStarsToExportValues = false; emitEmitHelpers(node); emitCaptureThisForNodeIfNecessary(node); emitLinesStartingAt(node.statements, startIndex); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5979c4246b1..08dbd22ff7c 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1602,6 +1602,7 @@ namespace ts { getReferencedValueDeclaration(reference: Identifier): Declaration; getTypeReferenceSerializationKind(typeName: EntityName): TypeReferenceSerializationKind; isOptionalParameter(node: ParameterDeclaration): boolean; + moduleExportsSomeValue(moduleReferenceExpression: Expression): boolean; } export const enum SymbolFlags { @@ -1718,6 +1719,7 @@ namespace ts { exportsChecked?: boolean; // True if exports of external module have been checked isNestedRedeclaration?: boolean; // True if symbol is block scoped redeclaration bindingElement?: BindingElement; // Binding element associated with property symbol + exportsSomeValue?: boolean; // true if module exports some value (not just types) } /* @internal */ diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 747b0b2beb8..3429b71b93c 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -289,7 +289,6 @@ exports.a8 = function_module_2.a; var class_module_2 = require("class-module"); exports.a0 = class_module_2.a; // export-star -__export(require("interface")); __export(require("variable")); __export(require("interface-variable")); __export(require("module")); diff --git a/tests/baselines/reference/exportDeclarationInInternalModule.js b/tests/baselines/reference/exportDeclarationInInternalModule.js index 4a1ee9b739f..39c8123a1e7 100644 --- a/tests/baselines/reference/exportDeclarationInInternalModule.js +++ b/tests/baselines/reference/exportDeclarationInInternalModule.js @@ -53,7 +53,7 @@ var Bbb; return SomeType; })(); Bbb.SomeType = SomeType; - __export(require()); // this line causes the nullref + // this line causes the nullref })(Bbb || (Bbb = {})); var a; diff --git a/tests/baselines/reference/exportStarForValues.js b/tests/baselines/reference/exportStarForValues.js new file mode 100644 index 00000000000..bd82373d52a --- /dev/null +++ b/tests/baselines/reference/exportStarForValues.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/exportStarForValues.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +var x; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + var x; +}); diff --git a/tests/baselines/reference/exportStarForValues.symbols b/tests/baselines/reference/exportStarForValues.symbols new file mode 100644 index 00000000000..6694afecdc6 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x; +>x : Symbol(x, Decl(file2.ts, 1, 3)) + diff --git a/tests/baselines/reference/exportStarForValues.types b/tests/baselines/reference/exportStarForValues.types new file mode 100644 index 00000000000..b326a7e7ff6 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x; +>x : any + diff --git a/tests/baselines/reference/exportStarForValues10.js b/tests/baselines/reference/exportStarForValues10.js new file mode 100644 index 00000000000..781316cb8f9 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues10.js @@ -0,0 +1,52 @@ +//// [tests/cases/compiler/exportStarForValues10.ts] //// + +//// [file0.ts] + +export var v = 1; + +//// [file1.ts] +export interface Foo { x } + +//// [file2.ts] +export * from "file0"; +export * from "file1"; +var x = 1; + +//// [file0.js] +System.register([], function(exports_1) { + var v; + return { + setters:[], + execute: function() { + exports_1("v", v = 1); + } + } +}); +//// [file1.js] +System.register([], function(exports_1) { + return { + setters:[], + execute: function() { + } + } +}); +//// [file2.js] +System.register(["file0"], function(exports_1) { + var x; + function exportStar_1(m) { + var exports = {}; + for(var n in m) { + if (n !== "default") exports[n] = m[n]; + } + exports_1(exports); + } + return { + setters:[ + function (file0_1_1) { + exportStar_1(file0_1_1); + }], + execute: function() { + x = 1; + } + } +}); diff --git a/tests/baselines/reference/exportStarForValues10.symbols b/tests/baselines/reference/exportStarForValues10.symbols new file mode 100644 index 00000000000..2de35864d27 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues10.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file0.ts === + +export var v = 1; +>v : Symbol(v, Decl(file0.ts, 1, 10)) + +=== tests/cases/compiler/file1.ts === +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 0, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file0"; +export * from "file1"; +var x = 1; +>x : Symbol(x, Decl(file2.ts, 2, 3)) + diff --git a/tests/baselines/reference/exportStarForValues10.types b/tests/baselines/reference/exportStarForValues10.types new file mode 100644 index 00000000000..370f02318c1 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues10.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/file0.ts === + +export var v = 1; +>v : number +>1 : number + +=== tests/cases/compiler/file1.ts === +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file0"; +export * from "file1"; +var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues2.js b/tests/baselines/reference/exportStarForValues2.js new file mode 100644 index 00000000000..3d6b24ae433 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues2.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/exportStarForValues2.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +var x = 1; + +//// [file3.ts] +export * from "file2" +var x = 1; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); +//// [file3.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues2.symbols b/tests/baselines/reference/exportStarForValues2.symbols new file mode 100644 index 00000000000..0fa739f5431 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues2.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x = 1; +>x : Symbol(x, Decl(file2.ts, 1, 3)) + +=== tests/cases/compiler/file3.ts === +export * from "file2" +var x = 1; +>x : Symbol(x, Decl(file3.ts, 1, 3)) + diff --git a/tests/baselines/reference/exportStarForValues2.types b/tests/baselines/reference/exportStarForValues2.types new file mode 100644 index 00000000000..f1de53bd7cf --- /dev/null +++ b/tests/baselines/reference/exportStarForValues2.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export * from "file2" +var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues3.js b/tests/baselines/reference/exportStarForValues3.js new file mode 100644 index 00000000000..c5136e57eef --- /dev/null +++ b/tests/baselines/reference/exportStarForValues3.js @@ -0,0 +1,45 @@ +//// [tests/cases/compiler/exportStarForValues3.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export interface A { x } +export * from "file1" +var x = 1; + +//// [file3.ts] +export interface B { x } +export * from "file1" +var x = 1; + +//// [file4.ts] +export interface C { x } +export * from "file2" +export * from "file3" +var x = 1; + +//// [file5.ts] +export * from "file4" +var x = 1; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); +//// [file3.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); +//// [file4.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); +//// [file5.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues3.symbols b/tests/baselines/reference/exportStarForValues3.symbols new file mode 100644 index 00000000000..a79aeb36588 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues3.symbols @@ -0,0 +1,39 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : Symbol(A, Decl(file2.ts, 0, 0)) +>x : Symbol(x, Decl(file2.ts, 0, 20)) + +export * from "file1" +var x = 1; +>x : Symbol(x, Decl(file2.ts, 2, 3)) + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : Symbol(B, Decl(file3.ts, 0, 0)) +>x : Symbol(x, Decl(file3.ts, 0, 20)) + +export * from "file1" +var x = 1; +>x : Symbol(x, Decl(file3.ts, 2, 3)) + +=== tests/cases/compiler/file4.ts === +export interface C { x } +>C : Symbol(C, Decl(file4.ts, 0, 0)) +>x : Symbol(x, Decl(file4.ts, 0, 20)) + +export * from "file2" +export * from "file3" +var x = 1; +>x : Symbol(x, Decl(file4.ts, 3, 3)) + +=== tests/cases/compiler/file5.ts === +export * from "file4" +var x = 1; +>x : Symbol(x, Decl(file5.ts, 1, 3)) + diff --git a/tests/baselines/reference/exportStarForValues3.types b/tests/baselines/reference/exportStarForValues3.types new file mode 100644 index 00000000000..d2ee5ebb1d4 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues3.types @@ -0,0 +1,43 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : A +>x : any + +export * from "file1" +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : B +>x : any + +export * from "file1" +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file4.ts === +export interface C { x } +>C : C +>x : any + +export * from "file2" +export * from "file3" +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file5.ts === +export * from "file4" +var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues4.js b/tests/baselines/reference/exportStarForValues4.js new file mode 100644 index 00000000000..2e7b84a6c2f --- /dev/null +++ b/tests/baselines/reference/exportStarForValues4.js @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/exportStarForValues4.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export interface A { x } +export * from "file1" +export * from "file3" +var x = 1; + +//// [file3.ts] +export interface B { x } +export * from "file2" +var x = 1; + + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file3.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + var x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues4.symbols b/tests/baselines/reference/exportStarForValues4.symbols new file mode 100644 index 00000000000..465d6ed3237 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues4.symbols @@ -0,0 +1,25 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : Symbol(A, Decl(file2.ts, 0, 0)) +>x : Symbol(x, Decl(file2.ts, 0, 20)) + +export * from "file1" +export * from "file3" +var x = 1; +>x : Symbol(x, Decl(file2.ts, 3, 3)) + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : Symbol(B, Decl(file3.ts, 0, 0)) +>x : Symbol(x, Decl(file3.ts, 0, 20)) + +export * from "file2" +var x = 1; +>x : Symbol(x, Decl(file3.ts, 2, 3)) + diff --git a/tests/baselines/reference/exportStarForValues4.types b/tests/baselines/reference/exportStarForValues4.types new file mode 100644 index 00000000000..b381f9461e8 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues4.types @@ -0,0 +1,27 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : A +>x : any + +export * from "file1" +export * from "file3" +var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : B +>x : any + +export * from "file2" +var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues5.js b/tests/baselines/reference/exportStarForValues5.js new file mode 100644 index 00000000000..48caf8bdb85 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues5.js @@ -0,0 +1,16 @@ +//// [tests/cases/compiler/exportStarForValues5.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +export var x; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { +}); diff --git a/tests/baselines/reference/exportStarForValues5.symbols b/tests/baselines/reference/exportStarForValues5.symbols new file mode 100644 index 00000000000..a2950afa73f --- /dev/null +++ b/tests/baselines/reference/exportStarForValues5.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x; +>x : Symbol(x, Decl(file2.ts, 1, 10)) + diff --git a/tests/baselines/reference/exportStarForValues5.types b/tests/baselines/reference/exportStarForValues5.types new file mode 100644 index 00000000000..9edfc88289a --- /dev/null +++ b/tests/baselines/reference/exportStarForValues5.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x; +>x : any + diff --git a/tests/baselines/reference/exportStarForValues6.js b/tests/baselines/reference/exportStarForValues6.js new file mode 100644 index 00000000000..e393ad3fe7e --- /dev/null +++ b/tests/baselines/reference/exportStarForValues6.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/exportStarForValues6.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +export var x = 1; + +//// [file1.js] +System.register([], function(exports_1) { + return { + setters:[], + execute: function() { + } + } +}); +//// [file2.js] +System.register([], function(exports_1) { + var x; + return { + setters:[], + execute: function() { + exports_1("x", x = 1); + } + } +}); diff --git a/tests/baselines/reference/exportStarForValues6.symbols b/tests/baselines/reference/exportStarForValues6.symbols new file mode 100644 index 00000000000..c57baf301dd --- /dev/null +++ b/tests/baselines/reference/exportStarForValues6.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x = 1; +>x : Symbol(x, Decl(file2.ts, 1, 10)) + diff --git a/tests/baselines/reference/exportStarForValues6.types b/tests/baselines/reference/exportStarForValues6.types new file mode 100644 index 00000000000..4fe38a45d02 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues6.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues7.js b/tests/baselines/reference/exportStarForValues7.js new file mode 100644 index 00000000000..1e249f45906 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues7.js @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/exportStarForValues7.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +export var x = 1; + +//// [file3.ts] +export * from "file2" +export var x = 1; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + exports.x = 1; +}); +//// [file3.js] +define(["require", "exports", "file2"], function (require, exports, file2_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(file2_1); + exports.x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues7.symbols b/tests/baselines/reference/exportStarForValues7.symbols new file mode 100644 index 00000000000..b59f2890047 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues7.symbols @@ -0,0 +1,16 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x = 1; +>x : Symbol(x, Decl(file2.ts, 1, 10)) + +=== tests/cases/compiler/file3.ts === +export * from "file2" +export var x = 1; +>x : Symbol(x, Decl(file3.ts, 1, 10)) + diff --git a/tests/baselines/reference/exportStarForValues7.types b/tests/baselines/reference/exportStarForValues7.types new file mode 100644 index 00000000000..d37661320d6 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues7.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +export var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export * from "file2" +export var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues8.js b/tests/baselines/reference/exportStarForValues8.js new file mode 100644 index 00000000000..aca678ddd17 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues8.js @@ -0,0 +1,54 @@ +//// [tests/cases/compiler/exportStarForValues8.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export interface A { x } +export * from "file1" +export var x = 1; + +//// [file3.ts] +export interface B { x } +export * from "file1" +export var x = 1; + +//// [file4.ts] +export interface C { x } +export * from "file2" +export * from "file3" +export var x = 1; + +//// [file5.ts] +export * from "file4" +export var x = 1; + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file2.js] +define(["require", "exports"], function (require, exports) { + exports.x = 1; +}); +//// [file3.js] +define(["require", "exports"], function (require, exports) { + exports.x = 1; +}); +//// [file4.js] +define(["require", "exports", "file2", "file3"], function (require, exports, file2_1, file3_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(file2_1); + __export(file3_1); + exports.x = 1; +}); +//// [file5.js] +define(["require", "exports", "file4"], function (require, exports, file4_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(file4_1); + exports.x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues8.symbols b/tests/baselines/reference/exportStarForValues8.symbols new file mode 100644 index 00000000000..be958ecabe8 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues8.symbols @@ -0,0 +1,39 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : Symbol(A, Decl(file2.ts, 0, 0)) +>x : Symbol(x, Decl(file2.ts, 0, 20)) + +export * from "file1" +export var x = 1; +>x : Symbol(x, Decl(file2.ts, 2, 10)) + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : Symbol(B, Decl(file3.ts, 0, 0)) +>x : Symbol(x, Decl(file3.ts, 0, 20)) + +export * from "file1" +export var x = 1; +>x : Symbol(x, Decl(file3.ts, 2, 10)) + +=== tests/cases/compiler/file4.ts === +export interface C { x } +>C : Symbol(C, Decl(file4.ts, 0, 0)) +>x : Symbol(x, Decl(file4.ts, 0, 20)) + +export * from "file2" +export * from "file3" +export var x = 1; +>x : Symbol(x, Decl(file4.ts, 3, 10)) + +=== tests/cases/compiler/file5.ts === +export * from "file4" +export var x = 1; +>x : Symbol(x, Decl(file5.ts, 1, 10)) + diff --git a/tests/baselines/reference/exportStarForValues8.types b/tests/baselines/reference/exportStarForValues8.types new file mode 100644 index 00000000000..9cc1484eecb --- /dev/null +++ b/tests/baselines/reference/exportStarForValues8.types @@ -0,0 +1,43 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : A +>x : any + +export * from "file1" +export var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : B +>x : any + +export * from "file1" +export var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file4.ts === +export interface C { x } +>C : C +>x : any + +export * from "file2" +export * from "file3" +export var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file5.ts === +export * from "file4" +export var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValues9.js b/tests/baselines/reference/exportStarForValues9.js new file mode 100644 index 00000000000..76758d8a2a0 --- /dev/null +++ b/tests/baselines/reference/exportStarForValues9.js @@ -0,0 +1,37 @@ +//// [tests/cases/compiler/exportStarForValues9.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export interface A { x } +export * from "file1" +export * from "file3" +export var x = 1; + +//// [file3.ts] +export interface B { x } +export * from "file2" +export var x = 1; + + +//// [file1.js] +define(["require", "exports"], function (require, exports) { +}); +//// [file3.js] +define(["require", "exports", "file2"], function (require, exports, file2_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(file2_1); + exports.x = 1; +}); +//// [file2.js] +define(["require", "exports", "file3"], function (require, exports, file3_1) { + function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; + } + __export(file3_1); + exports.x = 1; +}); diff --git a/tests/baselines/reference/exportStarForValues9.symbols b/tests/baselines/reference/exportStarForValues9.symbols new file mode 100644 index 00000000000..0684c9e7b7c --- /dev/null +++ b/tests/baselines/reference/exportStarForValues9.symbols @@ -0,0 +1,25 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : Symbol(A, Decl(file2.ts, 0, 0)) +>x : Symbol(x, Decl(file2.ts, 0, 20)) + +export * from "file1" +export * from "file3" +export var x = 1; +>x : Symbol(x, Decl(file2.ts, 3, 10)) + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : Symbol(B, Decl(file3.ts, 0, 0)) +>x : Symbol(x, Decl(file3.ts, 0, 20)) + +export * from "file2" +export var x = 1; +>x : Symbol(x, Decl(file3.ts, 2, 10)) + diff --git a/tests/baselines/reference/exportStarForValues9.types b/tests/baselines/reference/exportStarForValues9.types new file mode 100644 index 00000000000..3cf250ec50b --- /dev/null +++ b/tests/baselines/reference/exportStarForValues9.types @@ -0,0 +1,27 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export interface A { x } +>A : A +>x : any + +export * from "file1" +export * from "file3" +export var x = 1; +>x : number +>1 : number + +=== tests/cases/compiler/file3.ts === +export interface B { x } +>B : B +>x : any + +export * from "file2" +export var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/exportStarForValuesInSystem.js b/tests/baselines/reference/exportStarForValuesInSystem.js new file mode 100644 index 00000000000..29b839731a8 --- /dev/null +++ b/tests/baselines/reference/exportStarForValuesInSystem.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/exportStarForValuesInSystem.ts] //// + +//// [file1.ts] + +export interface Foo { x } + +//// [file2.ts] +export * from "file1" +var x = 1; + +//// [file1.js] +System.register([], function(exports_1) { + return { + setters:[], + execute: function() { + } + } +}); +//// [file2.js] +System.register([], function(exports_1) { + var x; + return { + setters:[], + execute: function() { + x = 1; + } + } +}); diff --git a/tests/baselines/reference/exportStarForValuesInSystem.symbols b/tests/baselines/reference/exportStarForValuesInSystem.symbols new file mode 100644 index 00000000000..c9ef9830c60 --- /dev/null +++ b/tests/baselines/reference/exportStarForValuesInSystem.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Symbol(Foo, Decl(file1.ts, 0, 0)) +>x : Symbol(x, Decl(file1.ts, 1, 22)) + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x = 1; +>x : Symbol(x, Decl(file2.ts, 1, 3)) + diff --git a/tests/baselines/reference/exportStarForValuesInSystem.types b/tests/baselines/reference/exportStarForValuesInSystem.types new file mode 100644 index 00000000000..36d07741e10 --- /dev/null +++ b/tests/baselines/reference/exportStarForValuesInSystem.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/file1.ts === + +export interface Foo { x } +>Foo : Foo +>x : any + +=== tests/cases/compiler/file2.ts === +export * from "file1" +var x = 1; +>x : number +>1 : number + diff --git a/tests/baselines/reference/moduleElementsInWrongContext.js b/tests/baselines/reference/moduleElementsInWrongContext.js index 635da02bdf2..df4935f9e19 100644 --- a/tests/baselines/reference/moduleElementsInWrongContext.js +++ b/tests/baselines/reference/moduleElementsInWrongContext.js @@ -34,7 +34,6 @@ { var v; function foo() { } - __export(require("ambient")); exports["default"] = v; var C = (function () { function C() { diff --git a/tests/baselines/reference/moduleElementsInWrongContext2.js b/tests/baselines/reference/moduleElementsInWrongContext2.js index fdf1222e549..b923bc7861e 100644 --- a/tests/baselines/reference/moduleElementsInWrongContext2.js +++ b/tests/baselines/reference/moduleElementsInWrongContext2.js @@ -34,7 +34,6 @@ function blah () { function blah() { var v; function foo() { } - __export(require("ambient")); exports["default"] = v; var C = (function () { function C() { diff --git a/tests/baselines/reference/moduleElementsInWrongContext3.js b/tests/baselines/reference/moduleElementsInWrongContext3.js index d464d9d31b1..2fa0b60dce4 100644 --- a/tests/baselines/reference/moduleElementsInWrongContext3.js +++ b/tests/baselines/reference/moduleElementsInWrongContext3.js @@ -37,7 +37,6 @@ var P; { var v; function foo() { } - __export(require("ambient")); P["default"] = v; var C = (function () { function C() { diff --git a/tests/cases/compiler/exportStarForValues.ts b/tests/cases/compiler/exportStarForValues.ts new file mode 100644 index 00000000000..3432548c528 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues.ts @@ -0,0 +1,8 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +var x; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues10.ts b/tests/cases/compiler/exportStarForValues10.ts new file mode 100644 index 00000000000..82cee772b18 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues10.ts @@ -0,0 +1,12 @@ +// @module: system + +// @filename: file0.ts +export var v = 1; + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file0"; +export * from "file1"; +var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues2.ts b/tests/cases/compiler/exportStarForValues2.ts new file mode 100644 index 00000000000..63a880cce0a --- /dev/null +++ b/tests/cases/compiler/exportStarForValues2.ts @@ -0,0 +1,12 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +var x = 1; + +// @filename: file3.ts +export * from "file2" +var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues3.ts b/tests/cases/compiler/exportStarForValues3.ts new file mode 100644 index 00000000000..f0c36db0bda --- /dev/null +++ b/tests/cases/compiler/exportStarForValues3.ts @@ -0,0 +1,24 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export interface A { x } +export * from "file1" +var x = 1; + +// @filename: file3.ts +export interface B { x } +export * from "file1" +var x = 1; + +// @filename: file4.ts +export interface C { x } +export * from "file2" +export * from "file3" +var x = 1; + +// @filename: file5.ts +export * from "file4" +var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues4.ts b/tests/cases/compiler/exportStarForValues4.ts new file mode 100644 index 00000000000..d685ba1c8a3 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues4.ts @@ -0,0 +1,15 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export interface A { x } +export * from "file1" +export * from "file3" +var x = 1; + +// @filename: file3.ts +export interface B { x } +export * from "file2" +var x = 1; diff --git a/tests/cases/compiler/exportStarForValues5.ts b/tests/cases/compiler/exportStarForValues5.ts new file mode 100644 index 00000000000..cb716c72002 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues5.ts @@ -0,0 +1,8 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +export var x; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues6.ts b/tests/cases/compiler/exportStarForValues6.ts new file mode 100644 index 00000000000..a623e31f178 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues6.ts @@ -0,0 +1,8 @@ +// @module: system + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +export var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues7.ts b/tests/cases/compiler/exportStarForValues7.ts new file mode 100644 index 00000000000..c1343a44119 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues7.ts @@ -0,0 +1,12 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +export var x = 1; + +// @filename: file3.ts +export * from "file2" +export var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues8.ts b/tests/cases/compiler/exportStarForValues8.ts new file mode 100644 index 00000000000..0594f8b0877 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues8.ts @@ -0,0 +1,24 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export interface A { x } +export * from "file1" +export var x = 1; + +// @filename: file3.ts +export interface B { x } +export * from "file1" +export var x = 1; + +// @filename: file4.ts +export interface C { x } +export * from "file2" +export * from "file3" +export var x = 1; + +// @filename: file5.ts +export * from "file4" +export var x = 1; \ No newline at end of file diff --git a/tests/cases/compiler/exportStarForValues9.ts b/tests/cases/compiler/exportStarForValues9.ts new file mode 100644 index 00000000000..53ffb1b7954 --- /dev/null +++ b/tests/cases/compiler/exportStarForValues9.ts @@ -0,0 +1,15 @@ +// @module: amd + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export interface A { x } +export * from "file1" +export * from "file3" +export var x = 1; + +// @filename: file3.ts +export interface B { x } +export * from "file2" +export var x = 1; diff --git a/tests/cases/compiler/exportStarForValuesInSystem.ts b/tests/cases/compiler/exportStarForValuesInSystem.ts new file mode 100644 index 00000000000..1f60e8dec6f --- /dev/null +++ b/tests/cases/compiler/exportStarForValuesInSystem.ts @@ -0,0 +1,8 @@ +// @module: system + +// @filename: file1.ts +export interface Foo { x } + +// @filename: file2.ts +export * from "file1" +var x = 1; \ No newline at end of file From 6120f1f3da5ad35973f4d60e0e4c86eb9496d7b0 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Sun, 4 Oct 2015 22:45:08 -0700 Subject: [PATCH 012/265] fix linter issues --- src/compiler/checker.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 18e76f46d72..1cabea864dc 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14507,8 +14507,8 @@ namespace ts { if (symbolLinks.exportsSomeValue == undefined) { // for export assignments - check if resolved symbol for RHS is itself a value // otherwise - check if at least one export is value - symbolLinks.exportsSomeValue = hasExportAssignment - ? !!(moduleSymbol.flags & SymbolFlags.Value) + symbolLinks.exportsSomeValue = hasExportAssignment + ? !!(moduleSymbol.flags & SymbolFlags.Value) : forEachValue(getExportsOfModule(moduleSymbol), isValue); } @@ -14519,7 +14519,7 @@ namespace ts { return s && !!(s.flags & SymbolFlags.Value); } } - + // When resolved as an expression identifier, if the given node references an exported entity, return the declaration // node of the exported entity's container. Otherwise, return undefined. function getReferencedExportContainer(node: Identifier): SourceFile | ModuleDeclaration | EnumDeclaration { From ff7169530b18a874d396ace114be3e2e4dbfa31c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 6 Oct 2015 12:49:42 -0700 Subject: [PATCH 013/265] trial of change --- src/compiler/checker.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 40db300d310..ec2a5bfb020 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1020,11 +1020,14 @@ namespace ts { return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(target: SymbolTable, source: SymbolTable) { + function extendExportSymbols(originalModule: Symbol, target: SymbolTable, source: SymbolTable) { for (let id in source) { if (id !== "default" && !hasProperty(target, id)) { target[id] = source[id]; } + else if (id !== "default" && hasProperty(target, id)) { + diagnostics.add(createFileDiagnostic(getSourceFileOfNode(originalModule.valueDeclaration), 0, 0, Diagnostics.Duplicate_identifier_0, id)); + } } } @@ -1043,7 +1046,7 @@ namespace ts { if (!result) { result = cloneSymbolTable(moduleSymbol.exports); } - extendExportSymbols(result, symbol.exports); + extendExportSymbols(moduleSymbol, result, symbol.exports); } // All export * declarations are collected in an __export symbol by the binder let exportStars = symbol.exports["__export"]; From b9800f09b7e8f398b2f58025175ea42a3d1e522a Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 6 Oct 2015 15:50:35 -0700 Subject: [PATCH 014/265] Handle export * reexport errors smartly --- src/compiler/checker.ts | 52 +++++++++++++------ src/compiler/diagnosticMessages.json | 4 ++ .../reference/exportStar-amd.errors.txt | 8 ++- .../baselines/reference/exportStar.errors.txt | 8 ++- 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ec2a5bfb020..e4423773555 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1020,41 +1020,62 @@ namespace ts { return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - function extendExportSymbols(originalModule: Symbol, target: SymbolTable, source: SymbolTable) { + interface ExportStarDiagnosticsLookupTable { + [id: string]: {specifierText: string, exportsWithDuplicate: ExportDeclaration[]}; + } + + function extendExportSymbols(target: SymbolTable, source: SymbolTable, lookupTable?: ExportStarDiagnosticsLookupTable, exportNode?: ExportDeclaration) { for (let id in source) { if (id !== "default" && !hasProperty(target, id)) { target[id] = source[id]; + if (lookupTable && exportNode) { + lookupTable[id] = { + specifierText: getTextOfNode(exportNode.moduleSpecifier), + exportsWithDuplicate: [] + }; + } } - else if (id !== "default" && hasProperty(target, id)) { - diagnostics.add(createFileDiagnostic(getSourceFileOfNode(originalModule.valueDeclaration), 0, 0, Diagnostics.Duplicate_identifier_0, id)); + else if (lookupTable && exportNode && id !== "default" && hasProperty(target, id)) { + lookupTable[id].exportsWithDuplicate.push(exportNode); } } } function getExportsForModule(moduleSymbol: Symbol): SymbolTable { - let result: SymbolTable; let visitedSymbols: Symbol[] = []; - visit(moduleSymbol); - return result || moduleSymbol.exports; + return visit(moduleSymbol) || moduleSymbol.exports; // The ES6 spec permits export * declarations in a module to circularly reference the module itself. For example, // module 'a' can 'export * from "b"' and 'b' can 'export * from "a"' without error. - function visit(symbol: Symbol) { + function visit(symbol: Symbol): SymbolTable { if (symbol && symbol.flags & SymbolFlags.HasExports && !contains(visitedSymbols, symbol)) { visitedSymbols.push(symbol); - if (symbol !== moduleSymbol) { - if (!result) { - result = cloneSymbolTable(moduleSymbol.exports); - } - extendExportSymbols(moduleSymbol, result, symbol.exports); - } + let symbols: SymbolTable = cloneSymbolTable(symbol.exports); // All export * declarations are collected in an __export symbol by the binder let exportStars = symbol.exports["__export"]; if (exportStars) { + let nestedSymbols: SymbolTable = {}; + let lookupTable: ExportStarDiagnosticsLookupTable = {}; for (let node of exportStars.declarations) { - visit(resolveExternalModuleName(node, (node).moduleSpecifier)); + let resolvedModule = resolveExternalModuleName(node, (node as ExportDeclaration).moduleSpecifier); + let exportedSymbols = visit(resolvedModule); + extendExportSymbols( + nestedSymbols, + exportedSymbols, + lookupTable, + node as ExportDeclaration + ); } + for (let id in lookupTable) { + if (id !== "export=" && lookupTable[id].exportsWithDuplicate.length && !(id in symbols)) { // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + for (let node of lookupTable[id].exportsWithDuplicate) { + diagnostics.add(createDiagnosticForNode(node, Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + } + } + } + extendExportSymbols(symbols, nestedSymbols); } + return symbols; } } } @@ -13701,13 +13722,14 @@ namespace ts { function checkExternalModuleExports(node: SourceFile | ModuleDeclaration) { let moduleSymbol = getSymbolOfNode(node); - let links = getSymbolLinks(moduleSymbol); + let links: SymbolLinks = getSymbolLinks(moduleSymbol); if (!links.exportsChecked) { let exportEqualsSymbol = moduleSymbol.exports["export="]; if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { let declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } + getExportsOfModule(moduleSymbol); // Checks for export * conflicts links.exportsChecked = true; } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index f6656edb250..0f14ea0b021 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -832,6 +832,10 @@ "category": "Error", "code": 2307 }, + "An 'export * from {0}' declaration has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { + "category": "Error", + "code": 2308 + }, "An export assignment cannot be used in a module with other exported elements.": { "category": "Error", "code": 2309 diff --git a/tests/baselines/reference/exportStar-amd.errors.txt b/tests/baselines/reference/exportStar-amd.errors.txt index adab0516103..237290485b0 100644 --- a/tests/baselines/reference/exportStar-amd.errors.txt +++ b/tests/baselines/reference/exportStar-amd.errors.txt @@ -1,4 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -16,10 +18,14 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/c var z = "z"; export { x, y, z }; -==== tests/cases/conformance/es6/modules/t4.ts (0 errors) ==== +==== tests/cases/conformance/es6/modules/t4.ts (2 errors) ==== export * from "./t1"; export * from "./t2"; export * from "./t3"; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; diff --git a/tests/baselines/reference/exportStar.errors.txt b/tests/baselines/reference/exportStar.errors.txt index adab0516103..237290485b0 100644 --- a/tests/baselines/reference/exportStar.errors.txt +++ b/tests/baselines/reference/exportStar.errors.txt @@ -1,4 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -16,10 +18,14 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/c var z = "z"; export { x, y, z }; -==== tests/cases/conformance/es6/modules/t4.ts (0 errors) ==== +==== tests/cases/conformance/es6/modules/t4.ts (2 errors) ==== export * from "./t1"; export * from "./t2"; export * from "./t3"; + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. + ~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; From d8aa469a7d26caf4fa2b4504f3ae626abd0a6e72 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 6 Oct 2015 17:59:14 -0700 Subject: [PATCH 015/265] forbid duplicate var exports --- src/compiler/checker.ts | 21 +++- src/compiler/diagnosticMessages.json | 4 + ...lowedWithNamedImport1WithExport.errors.txt | 20 +++- ...llowedWithNamedImportWithExport.errors.txt | 20 +++- .../es6ImportNamedImportWithExport.errors.txt | 32 ++++- .../moduleDuplicateIdentifiers.errors.txt | 44 +++++++ .../reference/moduleDuplicateIdentifiers.js | 58 +++++++++ .../multipleDefaultExports02.errors.txt | 8 +- ...tExternalModuleImportWithExport.errors.txt | 55 +++++++++ ...ientExternalModuleImportWithExport.symbols | 105 ---------------- ...mbientExternalModuleImportWithExport.types | 113 ------------------ ...ternalModuleImportWithoutExport.errors.txt | 55 +++++++++ ...tExternalModuleImportWithoutExport.symbols | 105 ---------------- ...entExternalModuleImportWithoutExport.types | 113 ------------------ .../typeofANonExportedType.errors.txt | 8 +- .../reference/typeofAnExportedType.errors.txt | 8 +- .../compiler/moduleDuplicateIdentifiers.ts | 30 +++++ 17 files changed, 356 insertions(+), 443 deletions(-) create mode 100644 tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt create mode 100644 tests/baselines/reference/moduleDuplicateIdentifiers.js create mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt delete mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols delete mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types create mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt delete mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols delete mode 100644 tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types create mode 100644 tests/cases/compiler/moduleDuplicateIdentifiers.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e4423773555..1a692572802 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13729,7 +13729,26 @@ namespace ts { let declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } - getExportsOfModule(moduleSymbol); // Checks for export * conflicts + let exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts + for (let id in exports) { + if (id === "__export") continue; + if (!(exports[id].flags & SymbolFlags.Namespace || exports[id].flags & SymbolFlags.Interface) && exports[id].declarations.length > 1) { // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, and interfaces) + let exportedDeclarations: Declaration[] = []; + for (let declaration of exports[id].declarations) { + if (declaration.kind === SyntaxKind.FunctionDeclaration) { + if (!(declaration as FunctionDeclaration).body) { + continue; + } + } + exportedDeclarations.push(declaration); + } + if (exportedDeclarations.length > 1) { + for (let declaration of exportedDeclarations) { + diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Cannot_redeclare_exported_variable_0, id)); + } + } + } + } links.exportsChecked = true; } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0f14ea0b021..51fd7a1fa2e 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -892,6 +892,10 @@ "category": "Error", "code": 2322 }, + "Cannot redeclare exported variable '{0}'.": { + "category": "Error", + "code": 2323 + }, "Property '{0}' is missing in type '{1}'.": { "category": "Error", "code": 2324 diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt index 76c424a74d4..97c66a17960 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport1WithExport.errors.txt @@ -1,15 +1,21 @@ tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(2,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(3,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(3,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(4,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(5,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(5,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(6,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(7,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(7,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. tests/cases/compiler/client.ts(7,37): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. +tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(9,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. +tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. +tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'x1'. ==== tests/cases/compiler/server.ts (0 errors) ==== @@ -17,23 +23,29 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil var a = 10; export default a; -==== tests/cases/compiler/client.ts (12 errors) ==== +==== tests/cases/compiler/client.ts (18 errors) ==== export import defaultBinding1, { } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = defaultBinding1; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding2, { a } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ !!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. export var x1: number = defaultBinding2; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding3, { a as b } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ !!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. export var x1: number = defaultBinding3; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding4, { x, a as y } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. @@ -42,16 +54,22 @@ tests/cases/compiler/client.ts(11,34): error TS2305: Module '"tests/cases/compil ~ !!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'a'. export var x1: number = defaultBinding4; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding5, { x as z, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ !!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'x'. export var x1: number = defaultBinding5; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding6, { m, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. ~ !!! error TS2305: Module '"tests/cases/compiler/server"' has no exported member 'm'. export var x1: number = defaultBinding6; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt index 83f91787b87..859fe59b47f 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImportWithExport.errors.txt @@ -1,9 +1,15 @@ tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(5,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(7,12): error TS2323: Cannot redeclare exported variable 'x1'. +tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'x1'. tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'x1'. ==== tests/cases/compiler/server.ts (0 errors) ==== @@ -13,7 +19,7 @@ tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot export var m = a; export default {}; -==== tests/cases/compiler/client.ts (6 errors) ==== +==== tests/cases/compiler/client.ts (12 errors) ==== export import defaultBinding1, { } from "server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. @@ -21,21 +27,33 @@ tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = a; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding3, { a as b } from "server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = b; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding4, { x, a as y } from "server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = x; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export var x1: number = y; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding5, { x as z, } from "server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = z; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. export import defaultBinding6, { m, } from "server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var x1: number = m; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'x1'. \ No newline at end of file diff --git a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt index a5a4301683e..3b2d6b0cbd0 100644 --- a/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt +++ b/tests/baselines/reference/es6ImportNamedImportWithExport.errors.txt @@ -1,11 +1,21 @@ tests/cases/compiler/client.ts(1,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(2,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(3,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(4,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(5,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(6,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(7,12): error TS2323: Cannot redeclare exported variable 'xxxx'. +tests/cases/compiler/client.ts(8,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(9,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(10,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(11,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(12,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(13,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(14,12): error TS2323: Cannot redeclare exported variable 'xxxx'. +tests/cases/compiler/client.ts(15,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(16,1): error TS1191: An import declaration cannot have modifiers. +tests/cases/compiler/client.ts(17,12): error TS2323: Cannot redeclare exported variable 'xxxx'. +tests/cases/compiler/client.ts(18,12): error TS2323: Cannot redeclare exported variable 'xxxx'. tests/cases/compiler/client.ts(19,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(21,1): error TS1191: An import declaration cannot have modifiers. tests/cases/compiler/client.ts(25,1): error TS1191: An import declaration cannot have modifiers. @@ -23,7 +33,7 @@ tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot export var z2 = 10; export var aaaa = 10; -==== tests/cases/compiler/client.ts (12 errors) ==== +==== tests/cases/compiler/client.ts (22 errors) ==== export import { } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. @@ -31,33 +41,53 @@ tests/cases/compiler/client.ts(26,1): error TS1191: An import declaration cannot ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = a; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { a as b } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = b; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { x, a as y } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = x; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export var xxxx = y; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { x as z, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = z; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { m, } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = m; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { a1, x1 } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = a1; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export var xxxx = x1; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { a1 as a11, x1 as x11 } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. export var xxxx = a11; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export var xxxx = x11; + ~~~~ +!!! error TS2323: Cannot redeclare exported variable 'xxxx'. export import { z1 } from "./server"; ~~~~~~ !!! error TS1191: An import declaration cannot have modifiers. diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt new file mode 100644 index 00000000000..67ab99eee4b --- /dev/null +++ b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt @@ -0,0 +1,44 @@ +tests/cases/compiler/moduleDuplicateIdentifiers.ts(1,12): error TS2323: Cannot redeclare exported variable 'Foo'. +tests/cases/compiler/moduleDuplicateIdentifiers.ts(2,12): error TS2323: Cannot redeclare exported variable 'Foo'. +tests/cases/compiler/moduleDuplicateIdentifiers.ts(20,14): error TS2300: Duplicate identifier 'Kettle'. +tests/cases/compiler/moduleDuplicateIdentifiers.ts(24,14): error TS2300: Duplicate identifier 'Kettle'. + + +==== tests/cases/compiler/moduleDuplicateIdentifiers.ts (4 errors) ==== + export var Foo = 2; + ~~~ +!!! error TS2323: Cannot redeclare exported variable 'Foo'. + export var Foo = 42; // Should error + ~~~ +!!! error TS2323: Cannot redeclare exported variable 'Foo'. + + export interface Bar { + _brand1: any; + } + + export interface Bar { + _brand2: any; + } + + export namespace FooBar { + export var member1 = 2; + } + + export namespace FooBar { + export var member2 = 42; + } + + export class Kettle { + ~~~~~~ +!!! error TS2300: Duplicate identifier 'Kettle'. + member1 = 2; + } + + export class Kettle { + ~~~~~~ +!!! error TS2300: Duplicate identifier 'Kettle'. + member2 = 42; + } + + export var Pot = 2; + Pot = 42; // Shouldn't error \ No newline at end of file diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.js b/tests/baselines/reference/moduleDuplicateIdentifiers.js new file mode 100644 index 00000000000..e428ccd3c81 --- /dev/null +++ b/tests/baselines/reference/moduleDuplicateIdentifiers.js @@ -0,0 +1,58 @@ +//// [moduleDuplicateIdentifiers.ts] +export var Foo = 2; +export var Foo = 42; // Should error + +export interface Bar { + _brand1: any; +} + +export interface Bar { + _brand2: any; +} + +export namespace FooBar { + export var member1 = 2; +} + +export namespace FooBar { + export var member2 = 42; +} + +export class Kettle { + member1 = 2; +} + +export class Kettle { + member2 = 42; +} + +export var Pot = 2; +Pot = 42; // Shouldn't error + +//// [moduleDuplicateIdentifiers.js] +exports.Foo = 2; +exports.Foo = 42; // Should error +var FooBar; +(function (FooBar) { + FooBar.member1 = 2; +})(FooBar = exports.FooBar || (exports.FooBar = {})); +var FooBar; +(function (FooBar) { + FooBar.member2 = 42; +})(FooBar = exports.FooBar || (exports.FooBar = {})); +var Kettle = (function () { + function Kettle() { + this.member1 = 2; + } + return Kettle; +})(); +exports.Kettle = Kettle; +var Kettle = (function () { + function Kettle() { + this.member2 = 42; + } + return Kettle; +})(); +exports.Kettle = Kettle; +exports.Pot = 2; +exports.Pot = 42; // Shouldn't error diff --git a/tests/baselines/reference/multipleDefaultExports02.errors.txt b/tests/baselines/reference/multipleDefaultExports02.errors.txt index 235f8f7c3e3..3f27db47c94 100644 --- a/tests/baselines/reference/multipleDefaultExports02.errors.txt +++ b/tests/baselines/reference/multipleDefaultExports02.errors.txt @@ -1,17 +1,23 @@ +tests/cases/conformance/es6/modules/m1.ts(2,25): error TS2323: Cannot redeclare exported variable 'default'. tests/cases/conformance/es6/modules/m1.ts(2,25): error TS2393: Duplicate function implementation. +tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2323: Cannot redeclare exported variable 'default'. tests/cases/conformance/es6/modules/m1.ts(6,25): error TS2393: Duplicate function implementation. -==== tests/cases/conformance/es6/modules/m1.ts (2 errors) ==== +==== tests/cases/conformance/es6/modules/m1.ts (4 errors) ==== export default function foo() { ~~~ +!!! error TS2323: Cannot redeclare exported variable 'default'. + ~~~ !!! error TS2393: Duplicate function implementation. } export default function bar() { ~~~ +!!! error TS2323: Cannot redeclare exported variable 'default'. + ~~~ !!! error TS2393: Duplicate function implementation. } diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt new file mode 100644 index 00000000000..52d6c4c0fff --- /dev/null +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.errors.txt @@ -0,0 +1,55 @@ +tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts(15,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'. +tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts(17,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'. + + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts (2 errors) ==== + /// + /// + // Privacy errors - importing private elements + export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); + export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); + export import im_public_mi_public = require("m"); + export import im_public_mu_public = require("m2"); + + // Usage of privacy error imports + var privateUse_im_public_mi_private = new im_public_mi_private.c_public(); + export var publicUse_im_public_mi_private = new im_public_mi_private.c_public(); + var privateUse_im_public_mu_private = new im_public_mu_private.c_public(); + export var publicUse_im_public_mu_private = new im_public_mu_private.c_public(); + var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); + export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'. + var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); + export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_public_mi_public'. + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts (0 errors) ==== + // Public elements + export class c_public { + foo: string; + } + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts (0 errors) ==== + export class c_public { + bar: string; + } + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts (0 errors) ==== + // private elements + // Export - Error ambient modules allowed only in global + declare module 'm' { + export class c_private { + baz: string; + } + } + + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts (0 errors) ==== + declare module 'm2' { + export class c_private { + bing: string; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols deleted file mode 100644 index 2dcddbbfa06..00000000000 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.symbols +++ /dev/null @@ -1,105 +0,0 @@ -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts === -/// -/// -// Privacy errors - importing private elements -export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); ->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0)) - -export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) - -export import im_public_mi_public = require("m"); ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) - -export import im_public_mu_public = require("m2"); ->im_public_mu_public : Symbol(im_public_mu_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 5, 49)) - -// Usage of privacy error imports -var privateUse_im_public_mi_private = new im_public_mi_private.c_public(); ->privateUse_im_public_mi_private : Symbol(privateUse_im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 9, 3)) ->im_public_mi_private.c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0)) ->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0)) ->c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0)) - -export var publicUse_im_public_mi_private = new im_public_mi_private.c_public(); ->publicUse_im_public_mi_private : Symbol(publicUse_im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 10, 10)) ->im_public_mi_private.c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0)) ->im_public_mi_private : Symbol(im_public_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 0, 0)) ->c_public : Symbol(im_public_mi_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0)) - -var privateUse_im_public_mu_private = new im_public_mu_private.c_public(); ->privateUse_im_public_mu_private : Symbol(privateUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 11, 3)) ->im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) ->c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) - -export var publicUse_im_public_mu_private = new im_public_mu_private.c_public(); ->publicUse_im_public_mu_private : Symbol(publicUse_im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 12, 10)) ->im_public_mu_private.c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) ->im_public_mu_private : Symbol(im_public_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 3, 111)) ->c_public : Symbol(im_public_mu_private.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) - -var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); ->privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3)) ->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) ->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) - -export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); ->publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10)) ->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) ->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) - -var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); ->privateUse_im_public_mi_public : Symbol(privateUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 15, 3)) ->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) ->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) - -export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); ->publicUse_im_public_mi_public : Symbol(publicUse_im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 16, 10)) ->im_public_mi_public.c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) ->im_public_mi_public : Symbol(im_public_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_core.ts, 4, 112)) ->c_private : Symbol(im_public_mi_public.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts === -// Public elements -export class c_public { ->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 0, 0)) - - foo: string; ->foo : Symbol(foo, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require.ts, 1, 23)) -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts === -export class c_public { ->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 0)) - - bar: string; ->bar : Symbol(bar, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts, 0, 23)) -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts === -// private elements -// Export - Error ambient modules allowed only in global -declare module 'm' { - export class c_private { ->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 2, 20)) - - baz: string; ->baz : Symbol(baz, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts, 3, 28)) - } -} - - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts === -declare module 'm2' { - export class c_private { ->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts, 0, 21)) - - bing: string; ->bing : Symbol(bing, Decl(privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts, 1, 28)) - } -} - diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types deleted file mode 100644 index 5c082bef5de..00000000000 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithExport.types +++ /dev/null @@ -1,113 +0,0 @@ -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_core.ts === -/// -/// -// Privacy errors - importing private elements -export import im_public_mi_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require"); ->im_public_mi_private : typeof im_public_mi_private - -export import im_public_mu_private = require("./privacyTopLevelAmbientExternalModuleImportWithExport_require1"); ->im_public_mu_private : typeof im_public_mu_private - -export import im_public_mi_public = require("m"); ->im_public_mi_public : typeof im_public_mi_public - -export import im_public_mu_public = require("m2"); ->im_public_mu_public : typeof im_public_mu_public - -// Usage of privacy error imports -var privateUse_im_public_mi_private = new im_public_mi_private.c_public(); ->privateUse_im_public_mi_private : im_public_mi_private.c_public ->new im_public_mi_private.c_public() : im_public_mi_private.c_public ->im_public_mi_private.c_public : typeof im_public_mi_private.c_public ->im_public_mi_private : typeof im_public_mi_private ->c_public : typeof im_public_mi_private.c_public - -export var publicUse_im_public_mi_private = new im_public_mi_private.c_public(); ->publicUse_im_public_mi_private : im_public_mi_private.c_public ->new im_public_mi_private.c_public() : im_public_mi_private.c_public ->im_public_mi_private.c_public : typeof im_public_mi_private.c_public ->im_public_mi_private : typeof im_public_mi_private ->c_public : typeof im_public_mi_private.c_public - -var privateUse_im_public_mu_private = new im_public_mu_private.c_public(); ->privateUse_im_public_mu_private : im_public_mu_private.c_public ->new im_public_mu_private.c_public() : im_public_mu_private.c_public ->im_public_mu_private.c_public : typeof im_public_mu_private.c_public ->im_public_mu_private : typeof im_public_mu_private ->c_public : typeof im_public_mu_private.c_public - -export var publicUse_im_public_mu_private = new im_public_mu_private.c_public(); ->publicUse_im_public_mu_private : im_public_mu_private.c_public ->new im_public_mu_private.c_public() : im_public_mu_private.c_public ->im_public_mu_private.c_public : typeof im_public_mu_private.c_public ->im_public_mu_private : typeof im_public_mu_private ->c_public : typeof im_public_mu_private.c_public - -var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); ->privateUse_im_public_mi_public : im_public_mi_public.c_private ->new im_public_mi_public.c_private() : im_public_mi_public.c_private ->im_public_mi_public.c_private : typeof im_public_mi_public.c_private ->im_public_mi_public : typeof im_public_mi_public ->c_private : typeof im_public_mi_public.c_private - -export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); ->publicUse_im_public_mi_public : im_public_mi_public.c_private ->new im_public_mi_public.c_private() : im_public_mi_public.c_private ->im_public_mi_public.c_private : typeof im_public_mi_public.c_private ->im_public_mi_public : typeof im_public_mi_public ->c_private : typeof im_public_mi_public.c_private - -var privateUse_im_public_mi_public = new im_public_mi_public.c_private(); ->privateUse_im_public_mi_public : im_public_mi_public.c_private ->new im_public_mi_public.c_private() : im_public_mi_public.c_private ->im_public_mi_public.c_private : typeof im_public_mi_public.c_private ->im_public_mi_public : typeof im_public_mi_public ->c_private : typeof im_public_mi_public.c_private - -export var publicUse_im_public_mi_public = new im_public_mi_public.c_private(); ->publicUse_im_public_mi_public : im_public_mi_public.c_private ->new im_public_mi_public.c_private() : im_public_mi_public.c_private ->im_public_mi_public.c_private : typeof im_public_mi_public.c_private ->im_public_mi_public : typeof im_public_mi_public ->c_private : typeof im_public_mi_public.c_private - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require.ts === -// Public elements -export class c_public { ->c_public : c_public - - foo: string; ->foo : string -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require1.ts === -export class c_public { ->c_public : c_public - - bar: string; ->bar : string -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require2.ts === -// private elements -// Export - Error ambient modules allowed only in global -declare module 'm' { - export class c_private { ->c_private : c_private - - baz: string; ->baz : string - } -} - - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithExport_require3.ts === -declare module 'm2' { - export class c_private { ->c_private : c_private - - bing: string; ->bing : string - } -} - diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt new file mode 100644 index 00000000000..cc81762bce3 --- /dev/null +++ b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.errors.txt @@ -0,0 +1,55 @@ +tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts(15,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'. +tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts(17,12): error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'. + + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts (2 errors) ==== + /// + /// + // Privacy errors - importing private elements + import im_private_mi_private = require("m"); + import im_private_mu_private = require("m2"); + import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require"); + import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"); + + // Usage of privacy error imports + var privateUse_im_private_mi_private = new im_private_mi_private.c_private(); + export var publicUse_im_private_mi_private = new im_private_mi_private.c_private(); + var privateUse_im_private_mu_private = new im_private_mu_private.c_private(); + export var publicUse_im_private_mu_private = new im_private_mu_private.c_private(); + var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); + export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'. + var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); + export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2323: Cannot redeclare exported variable 'publicUse_im_private_mi_public'. + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts (0 errors) ==== + + // Public elements + export class c_public { + foo: string; + } + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts (0 errors) ==== + export class c_public { + bar: string; + } + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts (0 errors) ==== + // private elements + // Export - Error ambient modules allowed only in global + declare module 'm' { + export class c_private { + baz: string + } + } + +==== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts (0 errors) ==== + declare module 'm2' { + export class c_private { + bing: string; + } + } + \ No newline at end of file diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols deleted file mode 100644 index e366538124f..00000000000 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.symbols +++ /dev/null @@ -1,105 +0,0 @@ -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts === -/// -/// -// Privacy errors - importing private elements -import im_private_mi_private = require("m"); ->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0)) - -import im_private_mu_private = require("m2"); ->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44)) - -import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require"); ->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45)) - -import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"); ->im_private_mu_public : Symbol(im_private_mu_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 5, 105)) - -// Usage of privacy error imports -var privateUse_im_private_mi_private = new im_private_mi_private.c_private(); ->privateUse_im_private_mi_private : Symbol(privateUse_im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 9, 3)) ->im_private_mi_private.c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20)) ->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0)) ->c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20)) - -export var publicUse_im_private_mi_private = new im_private_mi_private.c_private(); ->publicUse_im_private_mi_private : Symbol(publicUse_im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 10, 10)) ->im_private_mi_private.c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20)) ->im_private_mi_private : Symbol(im_private_mi_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 0, 0)) ->c_private : Symbol(im_private_mi_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20)) - -var privateUse_im_private_mu_private = new im_private_mu_private.c_private(); ->privateUse_im_private_mu_private : Symbol(privateUse_im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 11, 3)) ->im_private_mu_private.c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21)) ->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44)) ->c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21)) - -export var publicUse_im_private_mu_private = new im_private_mu_private.c_private(); ->publicUse_im_private_mu_private : Symbol(publicUse_im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 12, 10)) ->im_private_mu_private.c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21)) ->im_private_mu_private : Symbol(im_private_mu_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 3, 44)) ->c_private : Symbol(im_private_mu_private.c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21)) - -var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); ->privateUse_im_private_mi_public : Symbol(privateUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 15, 3)) ->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) ->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45)) ->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) - -export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); ->publicUse_im_private_mi_public : Symbol(publicUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 16, 10)) ->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) ->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45)) ->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) - -var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); ->privateUse_im_private_mi_public : Symbol(privateUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 13, 3), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 15, 3)) ->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) ->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45)) ->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) - -export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); ->publicUse_im_private_mi_public : Symbol(publicUse_im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 14, 10), Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 16, 10)) ->im_private_mi_public.c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) ->im_private_mi_public : Symbol(im_private_mi_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts, 4, 45)) ->c_public : Symbol(im_private_mi_public.c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts === - -// Public elements -export class c_public { ->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 0, 0)) - - foo: string; ->foo : Symbol(foo, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts, 2, 23)) -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts === -export class c_public { ->c_public : Symbol(c_public, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts, 0, 0)) - - bar: string; ->bar : Symbol(bar, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts, 0, 23)) -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts === -// private elements -// Export - Error ambient modules allowed only in global -declare module 'm' { - export class c_private { ->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 2, 20)) - - baz: string ->baz : Symbol(baz, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts, 3, 28)) - } -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts === -declare module 'm2' { - export class c_private { ->c_private : Symbol(c_private, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 0, 21)) - - bing: string; ->bing : Symbol(bing, Decl(privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts, 1, 28)) - } -} - diff --git a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types b/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types deleted file mode 100644 index 437d35fb64a..00000000000 --- a/tests/baselines/reference/privacyTopLevelAmbientExternalModuleImportWithoutExport.types +++ /dev/null @@ -1,113 +0,0 @@ -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_core.ts === -/// -/// -// Privacy errors - importing private elements -import im_private_mi_private = require("m"); ->im_private_mi_private : typeof im_private_mi_private - -import im_private_mu_private = require("m2"); ->im_private_mu_private : typeof im_private_mu_private - -import im_private_mi_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require"); ->im_private_mi_public : typeof im_private_mi_public - -import im_private_mu_public = require("privacyTopLevelAmbientExternalModuleImportWithoutExport_require1"); ->im_private_mu_public : typeof im_private_mu_public - -// Usage of privacy error imports -var privateUse_im_private_mi_private = new im_private_mi_private.c_private(); ->privateUse_im_private_mi_private : im_private_mi_private.c_private ->new im_private_mi_private.c_private() : im_private_mi_private.c_private ->im_private_mi_private.c_private : typeof im_private_mi_private.c_private ->im_private_mi_private : typeof im_private_mi_private ->c_private : typeof im_private_mi_private.c_private - -export var publicUse_im_private_mi_private = new im_private_mi_private.c_private(); ->publicUse_im_private_mi_private : im_private_mi_private.c_private ->new im_private_mi_private.c_private() : im_private_mi_private.c_private ->im_private_mi_private.c_private : typeof im_private_mi_private.c_private ->im_private_mi_private : typeof im_private_mi_private ->c_private : typeof im_private_mi_private.c_private - -var privateUse_im_private_mu_private = new im_private_mu_private.c_private(); ->privateUse_im_private_mu_private : im_private_mu_private.c_private ->new im_private_mu_private.c_private() : im_private_mu_private.c_private ->im_private_mu_private.c_private : typeof im_private_mu_private.c_private ->im_private_mu_private : typeof im_private_mu_private ->c_private : typeof im_private_mu_private.c_private - -export var publicUse_im_private_mu_private = new im_private_mu_private.c_private(); ->publicUse_im_private_mu_private : im_private_mu_private.c_private ->new im_private_mu_private.c_private() : im_private_mu_private.c_private ->im_private_mu_private.c_private : typeof im_private_mu_private.c_private ->im_private_mu_private : typeof im_private_mu_private ->c_private : typeof im_private_mu_private.c_private - -var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); ->privateUse_im_private_mi_public : im_private_mi_public.c_public ->new im_private_mi_public.c_public() : im_private_mi_public.c_public ->im_private_mi_public.c_public : typeof im_private_mi_public.c_public ->im_private_mi_public : typeof im_private_mi_public ->c_public : typeof im_private_mi_public.c_public - -export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); ->publicUse_im_private_mi_public : im_private_mi_public.c_public ->new im_private_mi_public.c_public() : im_private_mi_public.c_public ->im_private_mi_public.c_public : typeof im_private_mi_public.c_public ->im_private_mi_public : typeof im_private_mi_public ->c_public : typeof im_private_mi_public.c_public - -var privateUse_im_private_mi_public = new im_private_mi_public.c_public(); ->privateUse_im_private_mi_public : im_private_mi_public.c_public ->new im_private_mi_public.c_public() : im_private_mi_public.c_public ->im_private_mi_public.c_public : typeof im_private_mi_public.c_public ->im_private_mi_public : typeof im_private_mi_public ->c_public : typeof im_private_mi_public.c_public - -export var publicUse_im_private_mi_public = new im_private_mi_public.c_public(); ->publicUse_im_private_mi_public : im_private_mi_public.c_public ->new im_private_mi_public.c_public() : im_private_mi_public.c_public ->im_private_mi_public.c_public : typeof im_private_mi_public.c_public ->im_private_mi_public : typeof im_private_mi_public ->c_public : typeof im_private_mi_public.c_public - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require.ts === - -// Public elements -export class c_public { ->c_public : c_public - - foo: string; ->foo : string -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require1.ts === -export class c_public { ->c_public : c_public - - bar: string; ->bar : string -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require2.ts === -// private elements -// Export - Error ambient modules allowed only in global -declare module 'm' { - export class c_private { ->c_private : c_private - - baz: string ->baz : string - } -} - -=== tests/cases/compiler/privacyTopLevelAmbientExternalModuleImportWithoutExport_require3.ts === -declare module 'm2' { - export class c_private { ->c_private : c_private - - bing: string; ->bing : string - } -} - diff --git a/tests/baselines/reference/typeofANonExportedType.errors.txt b/tests/baselines/reference/typeofANonExportedType.errors.txt index d07468f62e1..0fb239f6aee 100644 --- a/tests/baselines/reference/typeofANonExportedType.errors.txt +++ b/tests/baselines/reference/typeofANonExportedType.errors.txt @@ -1,8 +1,10 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(2,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. +tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(20,12): error TS2323: Cannot redeclare exported variable 'r5'. +tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(21,12): error TS2323: Cannot redeclare exported variable 'r5'. tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts(42,12): error TS2502: 'r12' is referenced directly or indirectly in its own type annotation. -==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts (2 errors) ==== +==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType.ts (4 errors) ==== var x = 1; export var r1: typeof x; ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -25,7 +27,11 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofANonExportedType export var i: I; var i2: I; export var r5: typeof i; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'r5'. export var r5: typeof i2; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'r5'. module M { export var foo = ''; diff --git a/tests/baselines/reference/typeofAnExportedType.errors.txt b/tests/baselines/reference/typeofAnExportedType.errors.txt index cb6d8c68887..51dd7cf06b6 100644 --- a/tests/baselines/reference/typeofAnExportedType.errors.txt +++ b/tests/baselines/reference/typeofAnExportedType.errors.txt @@ -1,8 +1,10 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(1,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. +tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(20,12): error TS2323: Cannot redeclare exported variable 'r5'. +tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(21,12): error TS2323: Cannot redeclare exported variable 'r5'. tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts(42,12): error TS2502: 'r12' is referenced directly or indirectly in its own type annotation. -==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts (2 errors) ==== +==== tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.ts (4 errors) ==== export var x = 1; ~~~~~~~~~~~~~~~~~ !!! error TS1148: Cannot compile modules unless the '--module' flag is provided. @@ -25,7 +27,11 @@ tests/cases/conformance/types/specifyingTypes/typeQueries/typeofAnExportedType.t export var i: I; var i2: I; export var r5: typeof i; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'r5'. export var r5: typeof i2; + ~~ +!!! error TS2323: Cannot redeclare exported variable 'r5'. export module M { export var foo = ''; diff --git a/tests/cases/compiler/moduleDuplicateIdentifiers.ts b/tests/cases/compiler/moduleDuplicateIdentifiers.ts new file mode 100644 index 00000000000..283a6d241bf --- /dev/null +++ b/tests/cases/compiler/moduleDuplicateIdentifiers.ts @@ -0,0 +1,30 @@ +// @module: commonjs +export var Foo = 2; +export var Foo = 42; // Should error + +export interface Bar { + _brand1: any; +} + +export interface Bar { + _brand2: any; +} + +export namespace FooBar { + export var member1 = 2; +} + +export namespace FooBar { + export var member2 = 42; +} + +export class Kettle { + member1 = 2; +} + +export class Kettle { + member2 = 42; +} + +export var Pot = 2; +Pot = 42; // Shouldn't error \ No newline at end of file From 0115d688775ccdd18a34ce31ea7997e99a80fac3 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 7 Oct 2015 10:49:47 -0700 Subject: [PATCH 016/265] PR Feedback, add enums to exceptions --- src/compiler/checker.ts | 18 ++++++++---- .../moduleDuplicateIdentifiers.errors.txt | 19 +++++++++--- .../reference/moduleDuplicateIdentifiers.js | 29 ++++++++++++++++--- .../compiler/moduleDuplicateIdentifiers.ts | 18 +++++++++--- 4 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1a692572802..419779c3f2d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1067,9 +1067,15 @@ namespace ts { ); } for (let id in lookupTable) { - if (id !== "export=" && lookupTable[id].exportsWithDuplicate.length && !(id in symbols)) { // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + if (id !== "export=" && lookupTable[id].exportsWithDuplicate.length && !(id in symbols)) { for (let node of lookupTable[id].exportsWithDuplicate) { - diagnostics.add(createDiagnosticForNode(node, Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id)); + diagnostics.add(createDiagnosticForNode( + node, + Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, + lookupTable[id].specifierText, + id + )); } } } @@ -13722,7 +13728,7 @@ namespace ts { function checkExternalModuleExports(node: SourceFile | ModuleDeclaration) { let moduleSymbol = getSymbolOfNode(node); - let links: SymbolLinks = getSymbolLinks(moduleSymbol); + let links = getSymbolLinks(moduleSymbol); if (!links.exportsChecked) { let exportEqualsSymbol = moduleSymbol.exports["export="]; if (exportEqualsSymbol && hasExportedMembers(moduleSymbol)) { @@ -13732,9 +13738,11 @@ namespace ts { let exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts for (let id in exports) { if (id === "__export") continue; - if (!(exports[id].flags & SymbolFlags.Namespace || exports[id].flags & SymbolFlags.Interface) && exports[id].declarations.length > 1) { // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, and interfaces) + let exportedSymbol = exports[id]; + // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) + if (!(exportedSymbol.flags & SymbolFlags.Namespace || exportedSymbol.flags & SymbolFlags.Interface || exportedSymbol.flags & SymbolFlags.Enum) && exportedSymbol.declarations.length > 1) { let exportedDeclarations: Declaration[] = []; - for (let declaration of exports[id].declarations) { + for (let declaration of exportedSymbol.declarations) { if (declaration.kind === SyntaxKind.FunctionDeclaration) { if (!(declaration as FunctionDeclaration).body) { continue; diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt index 67ab99eee4b..22bd6641a83 100644 --- a/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt +++ b/tests/baselines/reference/moduleDuplicateIdentifiers.errors.txt @@ -16,7 +16,7 @@ tests/cases/compiler/moduleDuplicateIdentifiers.ts(24,14): error TS2300: Duplica _brand1: any; } - export interface Bar { + export interface Bar { // Shouldn't error _brand2: any; } @@ -24,7 +24,7 @@ tests/cases/compiler/moduleDuplicateIdentifiers.ts(24,14): error TS2300: Duplica export var member1 = 2; } - export namespace FooBar { + export namespace FooBar { // Shouldn't error export var member2 = 42; } @@ -34,11 +34,22 @@ tests/cases/compiler/moduleDuplicateIdentifiers.ts(24,14): error TS2300: Duplica member1 = 2; } - export class Kettle { + export class Kettle { // Should error ~~~~~~ !!! error TS2300: Duplicate identifier 'Kettle'. member2 = 42; } export var Pot = 2; - Pot = 42; // Shouldn't error \ No newline at end of file + Pot = 42; // Shouldn't error + + export enum Utensils { + Spoon, + Fork, + Knife + } + + export enum Utensils { // Shouldn't error + Spork = 3 + } + \ No newline at end of file diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.js b/tests/baselines/reference/moduleDuplicateIdentifiers.js index e428ccd3c81..e02914bd874 100644 --- a/tests/baselines/reference/moduleDuplicateIdentifiers.js +++ b/tests/baselines/reference/moduleDuplicateIdentifiers.js @@ -6,7 +6,7 @@ export interface Bar { _brand1: any; } -export interface Bar { +export interface Bar { // Shouldn't error _brand2: any; } @@ -14,7 +14,7 @@ export namespace FooBar { export var member1 = 2; } -export namespace FooBar { +export namespace FooBar { // Shouldn't error export var member2 = 42; } @@ -22,12 +22,23 @@ export class Kettle { member1 = 2; } -export class Kettle { +export class Kettle { // Should error member2 = 42; } export var Pot = 2; -Pot = 42; // Shouldn't error +Pot = 42; // Shouldn't error + +export enum Utensils { + Spoon, + Fork, + Knife +} + +export enum Utensils { // Shouldn't error + Spork = 3 +} + //// [moduleDuplicateIdentifiers.js] exports.Foo = 2; @@ -56,3 +67,13 @@ var Kettle = (function () { exports.Kettle = Kettle; exports.Pot = 2; exports.Pot = 42; // Shouldn't error +(function (Utensils) { + Utensils[Utensils["Spoon"] = 0] = "Spoon"; + Utensils[Utensils["Fork"] = 1] = "Fork"; + Utensils[Utensils["Knife"] = 2] = "Knife"; +})(exports.Utensils || (exports.Utensils = {})); +var Utensils = exports.Utensils; +(function (Utensils) { + Utensils[Utensils["Spork"] = 3] = "Spork"; +})(exports.Utensils || (exports.Utensils = {})); +var Utensils = exports.Utensils; diff --git a/tests/cases/compiler/moduleDuplicateIdentifiers.ts b/tests/cases/compiler/moduleDuplicateIdentifiers.ts index 283a6d241bf..47be2bc5dbb 100644 --- a/tests/cases/compiler/moduleDuplicateIdentifiers.ts +++ b/tests/cases/compiler/moduleDuplicateIdentifiers.ts @@ -6,7 +6,7 @@ export interface Bar { _brand1: any; } -export interface Bar { +export interface Bar { // Shouldn't error _brand2: any; } @@ -14,7 +14,7 @@ export namespace FooBar { export var member1 = 2; } -export namespace FooBar { +export namespace FooBar { // Shouldn't error export var member2 = 42; } @@ -22,9 +22,19 @@ export class Kettle { member1 = 2; } -export class Kettle { +export class Kettle { // Should error member2 = 42; } export var Pot = 2; -Pot = 42; // Shouldn't error \ No newline at end of file +Pot = 42; // Shouldn't error + +export enum Utensils { + Spoon, + Fork, + Knife +} + +export enum Utensils { // Shouldn't error + Spork = 3 +} From 63fe64f067624878943325ac4c7f3f1826c2b848 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 8 Oct 2015 15:31:45 -0700 Subject: [PATCH 017/265] use a map, backticks --- src/compiler/checker.ts | 9 +++++---- src/compiler/diagnosticMessages.json | 2 +- tests/baselines/reference/exportStar-amd.errors.txt | 8 ++++---- tests/baselines/reference/exportStar.errors.txt | 8 ++++---- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 419779c3f2d..1eddcc54d78 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1020,11 +1020,12 @@ namespace ts { return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - interface ExportStarDiagnosticsLookupTable { - [id: string]: {specifierText: string, exportsWithDuplicate: ExportDeclaration[]}; + interface ExportedSymbolDiagnostics { + specifierText: string; + exportsWithDuplicate: ExportDeclaration[]; } - function extendExportSymbols(target: SymbolTable, source: SymbolTable, lookupTable?: ExportStarDiagnosticsLookupTable, exportNode?: ExportDeclaration) { + function extendExportSymbols(target: SymbolTable, source: SymbolTable, lookupTable?: Map, exportNode?: ExportDeclaration) { for (let id in source) { if (id !== "default" && !hasProperty(target, id)) { target[id] = source[id]; @@ -1055,7 +1056,7 @@ namespace ts { let exportStars = symbol.exports["__export"]; if (exportStars) { let nestedSymbols: SymbolTable = {}; - let lookupTable: ExportStarDiagnosticsLookupTable = {}; + let lookupTable: Map = {}; for (let node of exportStars.declarations) { let resolvedModule = resolveExternalModuleName(node, (node as ExportDeclaration).moduleSpecifier); let exportedSymbols = visit(resolvedModule); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 51fd7a1fa2e..ca2c15a7d96 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -832,7 +832,7 @@ "category": "Error", "code": 2307 }, - "An 'export * from {0}' declaration has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { + "An `export * from {0}` declaration has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { "category": "Error", "code": 2308 }, diff --git a/tests/baselines/reference/exportStar-amd.errors.txt b/tests/baselines/reference/exportStar-amd.errors.txt index 237290485b0..714890d5a14 100644 --- a/tests/baselines/reference/exportStar-amd.errors.txt +++ b/tests/baselines/reference/exportStar-amd.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -23,9 +23,9 @@ tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from export * from "./t2"; export * from "./t3"; ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; diff --git a/tests/baselines/reference/exportStar.errors.txt b/tests/baselines/reference/exportStar.errors.txt index 237290485b0..714890d5a14 100644 --- a/tests/baselines/reference/exportStar.errors.txt +++ b/tests/baselines/reference/exportStar.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -23,9 +23,9 @@ tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An 'export * from export * from "./t2"; export * from "./t3"; ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An 'export * from "./t1"' declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; From b31b45f584282175281a04c4e465115e4dde6c6a Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 26 Oct 2015 15:42:25 -0700 Subject: [PATCH 018/265] JavaScript class inference from prototype property assignment --- src/compiler/binder.ts | 32 ++++++++++++++ src/compiler/checker.ts | 43 +++++++++++++------ src/compiler/types.ts | 2 + src/compiler/utilities.ts | 29 +++++++++++++ src/services/services.ts | 1 + tests/cases/fourslash/javaScriptPrototype1.ts | 36 ++++++++++++++++ 6 files changed, 129 insertions(+), 14 deletions(-) create mode 100644 tests/cases/fourslash/javaScriptPrototype1.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index d5ab7dd11ca..bfef27a9102 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -622,6 +622,7 @@ namespace ts { function bindAnonymousDeclaration(node: Declaration, symbolFlags: SymbolFlags, name: string) { let symbol = createSymbol(symbolFlags, name); addDeclarationToSymbol(symbol, node, symbolFlags); + return symbol; } function bindBlockScopedDeclaration(node: Declaration, symbolFlags: SymbolFlags, symbolExcludes: SymbolFlags) { @@ -867,6 +868,9 @@ namespace ts { else if (isModuleExportsAssignment(node)) { bindModuleExportsAssignment(node); } + else if (isPrototypePropertyAssignment(node)) { + bindPrototypePropertyAssignment(node); + } } return checkStrictModeBinaryExpression(node); case SyntaxKind.CatchClause: @@ -1034,6 +1038,34 @@ namespace ts { bindExportAssignment(node); } + function bindPrototypePropertyAssignment(node: BinaryExpression) { + // We saw a node of the form 'x.prototype.y = z'. + // This does two things: turns 'x' into a constructor function, and + // adds a member 'y' to the result of that constructor function + // Get 'x', the class + let classId = ((node.left).expression).expression; + + // Look up the function in the local scope, since prototype assignments should immediately + // follow the function declaration + let funcSymbol = container.locals[classId.text]; + if (!funcSymbol) { + return; + } + + // The function is now a constructor rather than a normal function + if (!funcSymbol.inferredConstructor) { + funcSymbol.flags = (funcSymbol.flags | SymbolFlags.Class) & ~SymbolFlags.Function; + funcSymbol.members = funcSymbol.members || {}; + funcSymbol.members["__constructor"] = funcSymbol; + funcSymbol.inferredConstructor = true; + } + + // Get 'y', the property name, and add it to the type of the class + let propertyName = (node.left).name; + let prototypeSymbol = declareSymbol(funcSymbol.members, funcSymbol, (node.left).expression, SymbolFlags.HasMembers, SymbolFlags.None); + declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method | SymbolFlags.Property, SymbolFlags.None); + } + function bindCallExpression(node: CallExpression) { // We're only inspecting call expressions to detect CommonJS modules, so we can skip // this check if we've already seen the module indicator diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ac5056bf769..24da884a330 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -122,8 +122,8 @@ namespace ts { let noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - let anySignature = createSignature(undefined, undefined, emptyArray, anyType, undefined, 0, false, false); - let unknownSignature = createSignature(undefined, undefined, emptyArray, unknownType, undefined, 0, false, false); + let anySignature = createSignature(undefined, undefined, emptyArray, undefined, anyType, undefined, 0, false, false); + let unknownSignature = createSignature(undefined, undefined, emptyArray, undefined, unknownType, undefined, 0, false, false); let globals: SymbolTable = {}; @@ -3247,12 +3247,13 @@ namespace ts { resolveObjectTypeMembers(type, source, typeParameters, typeArguments); } - function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], + function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], kind: SignatureKind, resolvedReturnType: Type, typePredicate: TypePredicate, minArgumentCount: number, hasRestParameter: boolean, hasStringLiterals: boolean): Signature { let sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; sig.parameters = parameters; + sig.kind = kind; sig.resolvedReturnType = resolvedReturnType; sig.typePredicate = typePredicate; sig.minArgumentCount = minArgumentCount; @@ -3262,13 +3263,13 @@ namespace ts { } function cloneSignature(sig: Signature): Signature { - return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.resolvedReturnType, sig.typePredicate, + return createSignature(sig.declaration, sig.typeParameters, sig.parameters, sig.kind, sig.resolvedReturnType, sig.typePredicate, sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } function getDefaultConstructSignatures(classType: InterfaceType): Signature[] { if (!getBaseTypes(classType).length) { - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; + return [createSignature(undefined, classType.localTypeParameters, emptyArray, SignatureKind.Construct, classType, undefined, 0, false, false)]; } let baseConstructorType = getBaseConstructorTypeOfClass(classType); let baseSignatures = getSignaturesOfType(baseConstructorType, SignatureKind.Construct); @@ -3788,7 +3789,26 @@ namespace ts { } } - links.resolvedSignature = createSignature(declaration, typeParameters, parameters, returnType, typePredicate, + let kind: SignatureKind; + switch (declaration.kind) { + case SyntaxKind.Constructor: + case SyntaxKind.ConstructSignature: + case SyntaxKind.ConstructorType: + kind = SignatureKind.Construct; + break; + default: + if (declaration.symbol.inferredConstructor) { + kind = SignatureKind.Construct; + let proto = declaration.symbol.members["prototype"]; + returnType = createAnonymousType(createSymbol(SymbolFlags.None, "__jsClass"), proto.members, emptyArray, emptyArray, undefined, undefined); + } + else { + kind = SignatureKind.Call; + } + break; + } + + links.resolvedSignature = createSignature(declaration, typeParameters, parameters, kind, returnType, typePredicate, minArgumentCount, hasRestParameter(declaration), hasStringLiterals); } return links.resolvedSignature; @@ -3905,7 +3925,7 @@ namespace ts { // object type literal or interface (using the new keyword). Each way of declaring a constructor // will result in a different declaration kind. if (!signature.isolatedSignatureType) { - let isConstructor = signature.declaration.kind === SyntaxKind.Constructor || signature.declaration.kind === SyntaxKind.ConstructSignature; + let isConstructor = signature.kind === SignatureKind.Construct; let type = createObjectType(TypeFlags.Anonymous | TypeFlags.FromSignature); type.members = emptySymbols; type.properties = emptyArray; @@ -4611,6 +4631,7 @@ namespace ts { } let result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), + signature.kind, instantiateType(signature.resolvedReturnType, mapper), freshTypePredicate, signature.minArgumentCount, signature.hasRestParameter, signature.hasStringLiterals); @@ -9359,13 +9380,7 @@ namespace ts { return voidType; } if (node.kind === SyntaxKind.NewExpression) { - let declaration = signature.declaration; - - if (declaration && - declaration.kind !== SyntaxKind.Constructor && - declaration.kind !== SyntaxKind.ConstructSignature && - declaration.kind !== SyntaxKind.ConstructorType) { - + if (signature.kind === SignatureKind.Call) { // When resolved signature is a call signature (and not a construct signature) the result type is any if (compilerOptions.noImplicitAny) { error(node, Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5e8de9a3fb4..5232209e7d1 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1714,6 +1714,7 @@ namespace ts { /* @internal */ parent?: Symbol; // Parent symbol /* @internal */ exportSymbol?: Symbol; // Exported symbol associated with this symbol /* @internal */ constEnumOnlyModule?: boolean; // True if module contains only const enums or other modules with only const enums + /* @internal */ inferredConstructor?: boolean; // A function promoted to constructor as the result of a prototype property assignment } /* @internal */ @@ -1958,6 +1959,7 @@ namespace ts { declaration: SignatureDeclaration; // Originating declaration typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) parameters: Symbol[]; // Parameters + kind: SignatureKind; // Call or Construct typePredicate?: TypePredicate; // Type predicate /* @internal */ resolvedReturnType: Type; // Resolved return type diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 9eff4370ec2..05184e29f58 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1086,6 +1086,35 @@ namespace ts { (((expression).left).name.text === "exports"); } + /** + * Returns true if this expression is an assignment to the given named property + */ + function isAssignmentToProperty(expression: Node, name?: string): expression is BinaryExpression { + return (expression.kind === SyntaxKind.BinaryExpression) && + ((expression).operatorToken.kind === SyntaxKind.EqualsToken) && + isNamedPropertyAccess((expression).left, name); + } + + /** + * Returns true if this expression is a PropertyAccessExpression where the property name is the provided name + */ + function isNamedPropertyAccess(expression: Node, name?: string): expression is PropertyAccessExpression { + return expression.kind === SyntaxKind.PropertyAccessExpression && + (!name || (expression).name.text === name); + } + + /** + * Returns true if the node is an assignment in the form 'id1.prototype.id2 = expr' where id1 and id2 + * are any identifier. + * This function does not test if the node is in a JavaScript file or not. + */ + export function isPrototypePropertyAssignment(expression: Node): expression is BinaryExpression { + return isAssignmentToProperty(expression) && + isNamedPropertyAccess(expression.left) && + isNamedPropertyAccess((expression.left).expression, "prototype") && + ((expression.left).expression).expression.kind === SyntaxKind.Identifier; + } + export function getExternalModuleName(node: Node): Expression { if (node.kind === SyntaxKind.ImportDeclaration) { return (node).moduleSpecifier; diff --git a/src/services/services.ts b/src/services/services.ts index 30d993cb6b6..2c2bbb8e73e 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -735,6 +735,7 @@ namespace ts { declaration: SignatureDeclaration; typeParameters: TypeParameter[]; parameters: Symbol[]; + kind: SignatureKind; resolvedReturnType: Type; minArgumentCount: number; hasRestParameter: boolean; diff --git a/tests/cases/fourslash/javaScriptPrototype1.ts b/tests/cases/fourslash/javaScriptPrototype1.ts new file mode 100644 index 00000000000..0dec8d721d6 --- /dev/null +++ b/tests/cases/fourslash/javaScriptPrototype1.ts @@ -0,0 +1,36 @@ +/// + +// Assignments to the 'prototype' property of a function create a class + +// @allowNonTsExtensions: true +// @Filename: myMod.js +//// function myCtor(x) { +//// } +//// myCtor.prototype.foo = function() { return 32 }; +//// myCtor.prototype.bar = function() { return '' }; +//// +//// var m = new myCtor(10); +//// m/*1*/ +//// var x = m.foo(); +//// x/*2*/ +//// var y = m.bar(); +//// y/*3*/ + +goTo.marker('1'); +edit.insert('.'); +verify.memberListContains('foo', undefined, undefined, 'method'); +edit.insert('foo'); + +edit.backspace(); +edit.backspace(); + +goTo.marker('2'); +edit.insert('.'); +verify.memberListContains('toFixed', undefined, undefined, 'method'); +verify.not.memberListContains('substr', undefined, undefined, 'method'); +edit.backspace(); + +goTo.marker('3'); +edit.insert('.'); +verify.memberListContains('substr', undefined, undefined, 'method'); +verify.not.memberListContains('toFixed', undefined, undefined, 'method'); From c4db5cc6b590bac31d0379b6db0caf3700b76d00 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 27 Oct 2015 12:47:35 -0700 Subject: [PATCH 019/265] Error on redeclarations of undefined --- src/compiler/checker.ts | 20 ++++++++- src/compiler/diagnosticMessages.json | 4 ++ .../undefinedTypeAssignment.errors.txt | 43 +++++++++++++++++++ .../reference/undefinedTypeAssignment.js | 42 ++++++++++++++++++ .../cases/compiler/undefinedTypeAssignment.ts | 19 ++++++++ 5 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/undefinedTypeAssignment.errors.txt create mode 100644 tests/baselines/reference/undefinedTypeAssignment.js create mode 100644 tests/cases/compiler/undefinedTypeAssignment.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5370e7c4f02..ba0342596c1 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -50,6 +50,7 @@ namespace ts { let emitResolver = createResolver(); let undefinedSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "undefined"); + undefinedSymbol.declarations = []; let argumentsSymbol = createSymbol(SymbolFlags.Property | SymbolFlags.Transient, "arguments"); let checker: TypeChecker = { @@ -225,6 +226,10 @@ namespace ts { ResolvedReturnType } + const builtinGlobals: SymbolTable = { + [undefinedSymbol.name]: undefinedSymbol + }; + initializeTypeChecker(); return checker; @@ -336,6 +341,13 @@ namespace ts { target[id] = source[id]; } else { + if (target === globals && source !== builtinGlobals) { + if (hasProperty(builtinGlobals, id) && source[id].declarations && source[id].declarations.length) { + // Error on builtin redeclarations + forEach(source[id].declarations, addDeclarationDiagnostic.bind(undefined, id)); + continue; + } + } let symbol = target[id]; if (!(symbol.flags & SymbolFlags.Merged)) { target[id] = symbol = cloneSymbol(symbol); @@ -344,6 +356,10 @@ namespace ts { } } } + + function addDeclarationDiagnostic(id: string, declaration: Declaration) { + diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Declaration_duplicates_builtin_global_identifier_0, id)); + } } function getSymbolLinks(symbol: Symbol): SymbolLinks { @@ -14909,6 +14925,9 @@ namespace ts { bindSourceFile(file); }); + // Setup global builtins + mergeSymbolTable(globals, builtinGlobals); + // Initialize global symbol table forEach(host.getSourceFiles(), file => { if (!isExternalModule(file)) { @@ -14920,7 +14939,6 @@ namespace ts { getSymbolLinks(undefinedSymbol).type = undefinedType; getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments"); getSymbolLinks(unknownSymbol).type = unknownType; - globals[undefinedSymbol.name] = undefinedSymbol; // Initialize special types globalArrayType = getGlobalType("Array", /*arity*/ 1); globalObjectType = getGlobalType("Object"); diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index b799c2addba..d6e7d8dd592 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1168,6 +1168,10 @@ "category": "Error", "code": 2396 }, + "Declaration duplicates builtin global identifier '{0}'.": { + "category": "Error", + "code": 2397 + }, "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.": { "category": "Error", "code": 2399 diff --git a/tests/baselines/reference/undefinedTypeAssignment.errors.txt b/tests/baselines/reference/undefinedTypeAssignment.errors.txt new file mode 100644 index 00000000000..a14b1191255 --- /dev/null +++ b/tests/baselines/reference/undefinedTypeAssignment.errors.txt @@ -0,0 +1,43 @@ +tests/cases/compiler/a.ts(1,1): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/a.ts(2,5): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/a.ts(3,5): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/b.ts(1,7): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/b.ts(4,11): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/b.ts(7,11): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/b.ts(10,8): error TS2304: Cannot find name 'undefined'. + + +==== tests/cases/compiler/a.ts (3 errors) ==== + type undefined = string; + ~~~~~~~~~~~~~~~~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + var undefined = void 0; + ~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + var undefined = null; + ~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + function p(undefined = 42) { + return undefined; + } +==== tests/cases/compiler/b.ts (4 errors) ==== + class undefined { + ~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + foo: string; + } + interface undefined { + ~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + member: number; + } + namespace undefined { + ~~~~~~~~~ +!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. + export var x = 42; + } + var x: undefined; + ~~~~~~~~~ +!!! error TS2304: Cannot find name 'undefined'. + var x: typeof undefined; + \ No newline at end of file diff --git a/tests/baselines/reference/undefinedTypeAssignment.js b/tests/baselines/reference/undefinedTypeAssignment.js new file mode 100644 index 00000000000..9b4106c18ea --- /dev/null +++ b/tests/baselines/reference/undefinedTypeAssignment.js @@ -0,0 +1,42 @@ +//// [tests/cases/compiler/undefinedTypeAssignment.ts] //// + +//// [a.ts] +type undefined = string; +var undefined = void 0; +var undefined = null; +function p(undefined = 42) { + return undefined; +} +//// [b.ts] +class undefined { + foo: string; +} +interface undefined { + member: number; +} +namespace undefined { + export var x = 42; +} +var x: undefined; +var x: typeof undefined; + + +//// [a.js] +var undefined = void 0; +var undefined = null; +function p(undefined) { + if (undefined === void 0) { undefined = 42; } + return undefined; +} +//// [b.js] +var undefined = (function () { + function undefined() { + } + return undefined; +})(); +var undefined; +(function (undefined) { + undefined.x = 42; +})(undefined || (undefined = {})); +var x; +var x; diff --git a/tests/cases/compiler/undefinedTypeAssignment.ts b/tests/cases/compiler/undefinedTypeAssignment.ts new file mode 100644 index 00000000000..d8a128a49e7 --- /dev/null +++ b/tests/cases/compiler/undefinedTypeAssignment.ts @@ -0,0 +1,19 @@ +// @filename: a.ts +type undefined = string; +var undefined = void 0; +var undefined = null; +function p(undefined = 42) { + return undefined; +} +// @filename: b.ts +class undefined { + foo: string; +} +interface undefined { + member: number; +} +namespace undefined { + export var x = 42; +} +var x: undefined; +var x: typeof undefined; From bc3d95c0a41c833802d0939ecda081a167565b02 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 27 Oct 2015 17:17:31 -0700 Subject: [PATCH 020/265] JS class members as methods --- src/compiler/binder.ts | 2 +- src/compiler/checker.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index bfef27a9102..85882c495b6 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1063,7 +1063,7 @@ namespace ts { // Get 'y', the property name, and add it to the type of the class let propertyName = (node.left).name; let prototypeSymbol = declareSymbol(funcSymbol.members, funcSymbol, (node.left).expression, SymbolFlags.HasMembers, SymbolFlags.None); - declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method | SymbolFlags.Property, SymbolFlags.None); + declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method, SymbolFlags.None); } function bindCallExpression(node: CallExpression) { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 24da884a330..f0bdd48afa7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3843,6 +3843,11 @@ namespace ts { } } result.push(getSignatureFromDeclaration(node)); + break; + + case SyntaxKind.PropertyAccessExpression: + // Class inference from ClassName.prototype.methodName = expr + return getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); } } return result; From 0e47c67ee1b78aef0ac7d5ec63a1197e5499d688 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 28 Oct 2015 17:00:47 -0700 Subject: [PATCH 021/265] update error --- src/compiler/checker.ts | 2 +- src/compiler/diagnosticMessages.json | 2 +- .../undefinedTypeAssignment.errors.txt | 24 +++++++++---------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index ba0342596c1..fd86ff97c6a 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -358,7 +358,7 @@ namespace ts { } function addDeclarationDiagnostic(id: string, declaration: Declaration) { - diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Declaration_duplicates_builtin_global_identifier_0, id)); + diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0, id)); } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index d6e7d8dd592..be0628e93dd 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1168,7 +1168,7 @@ "category": "Error", "code": 2396 }, - "Declaration duplicates builtin global identifier '{0}'.": { + "Declaration name conflicts with built-in global identifier '{0}'.": { "category": "Error", "code": 2397 }, diff --git a/tests/baselines/reference/undefinedTypeAssignment.errors.txt b/tests/baselines/reference/undefinedTypeAssignment.errors.txt index a14b1191255..0b4a8eff874 100644 --- a/tests/baselines/reference/undefinedTypeAssignment.errors.txt +++ b/tests/baselines/reference/undefinedTypeAssignment.errors.txt @@ -1,39 +1,39 @@ -tests/cases/compiler/a.ts(1,1): error TS2397: Declaration duplicates builtin global identifier 'undefined'. -tests/cases/compiler/a.ts(2,5): error TS2397: Declaration duplicates builtin global identifier 'undefined'. -tests/cases/compiler/a.ts(3,5): error TS2397: Declaration duplicates builtin global identifier 'undefined'. -tests/cases/compiler/b.ts(1,7): error TS2397: Declaration duplicates builtin global identifier 'undefined'. -tests/cases/compiler/b.ts(4,11): error TS2397: Declaration duplicates builtin global identifier 'undefined'. -tests/cases/compiler/b.ts(7,11): error TS2397: Declaration duplicates builtin global identifier 'undefined'. +tests/cases/compiler/a.ts(1,1): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. +tests/cases/compiler/a.ts(2,5): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. +tests/cases/compiler/a.ts(3,5): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. +tests/cases/compiler/b.ts(1,7): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. +tests/cases/compiler/b.ts(4,11): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. +tests/cases/compiler/b.ts(7,11): error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. tests/cases/compiler/b.ts(10,8): error TS2304: Cannot find name 'undefined'. ==== tests/cases/compiler/a.ts (3 errors) ==== type undefined = string; ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. var undefined = void 0; ~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. var undefined = null; ~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. function p(undefined = 42) { return undefined; } ==== tests/cases/compiler/b.ts (4 errors) ==== class undefined { ~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. foo: string; } interface undefined { ~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. member: number; } namespace undefined { ~~~~~~~~~ -!!! error TS2397: Declaration duplicates builtin global identifier 'undefined'. +!!! error TS2397: Declaration name conflicts with built-in global identifier 'undefined'. export var x = 42; } var x: undefined; From 3b7213116d324585dc73548dc2289f8513b1884c Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 30 Oct 2015 12:34:56 -0700 Subject: [PATCH 022/265] Inference from JavaScript `prototype` property assignments --- src/compiler/binder.ts | 58 ++++++++++++++----- src/compiler/checker.ts | 31 +++++++--- src/compiler/types.ts | 13 +++++ src/compiler/utilities.ts | 36 ++++++++++++ tests/cases/fourslash/javaScriptPrototype1.ts | 26 ++++++--- tests/cases/fourslash/javaScriptPrototype2.ts | 36 ++++++++++++ tests/cases/fourslash/javaScriptPrototype3.ts | 40 +++++++++++++ tests/cases/fourslash/javaScriptPrototype4.ts | 36 ++++++++++++ 8 files changed, 247 insertions(+), 29 deletions(-) create mode 100644 tests/cases/fourslash/javaScriptPrototype2.ts create mode 100644 tests/cases/fourslash/javaScriptPrototype3.ts create mode 100644 tests/cases/fourslash/javaScriptPrototype4.ts diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 85882c495b6..9bd51f0c763 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -167,8 +167,21 @@ namespace ts { case SyntaxKind.ExportAssignment: return (node).isExportEquals ? "export=" : "default"; case SyntaxKind.BinaryExpression: - // Binary expression case is for JS module 'module.exports = expr' - return "export="; + switch (getSpecialPropertyAssignmentKind(node)) { + case SpecialPropertyAssignmentKind.ModuleExports: + // module.exports = ... + return "export="; + case SpecialPropertyAssignmentKind.ExportsProperty: + case SpecialPropertyAssignmentKind.ThisProperty: + // exports.x = ... or this.y = ... + return ((node as BinaryExpression).left as PropertyAccessExpression).name.text; + case SpecialPropertyAssignmentKind.PrototypeProperty: + // className.prototype.methodName = ... + return (((node as BinaryExpression).left as PropertyAccessExpression).expression as PropertyAccessExpression).name.text; + } + Debug.fail("Unknown binary declaration kind"); + break; + case SyntaxKind.FunctionDeclaration: case SyntaxKind.ClassDeclaration: return node.flags & NodeFlags.Default ? "default" : undefined; @@ -862,14 +875,20 @@ namespace ts { return checkStrictModeIdentifier(node); case SyntaxKind.BinaryExpression: if (isJavaScriptFile) { - if (isExportsPropertyAssignment(node)) { - bindExportsPropertyAssignment(node); - } - else if (isModuleExportsAssignment(node)) { - bindModuleExportsAssignment(node); - } - else if (isPrototypePropertyAssignment(node)) { - bindPrototypePropertyAssignment(node); + let specialKind = getSpecialPropertyAssignmentKind(node); + switch (specialKind) { + case SpecialPropertyAssignmentKind.ExportsProperty: + bindExportsPropertyAssignment(node); + break; + case SpecialPropertyAssignmentKind.ModuleExports: + bindModuleExportsAssignment(node); + break; + case SpecialPropertyAssignmentKind.PrototypeProperty: + bindPrototypePropertyAssignment(node); + break; + case SpecialPropertyAssignmentKind.ThisProperty: + bindThisPropertyAssignment(node); + break; } } return checkStrictModeBinaryExpression(node); @@ -1038,6 +1057,13 @@ namespace ts { bindExportAssignment(node); } + function bindThisPropertyAssignment(node: BinaryExpression) { + if (container.kind === SyntaxKind.FunctionExpression || container.kind === SyntaxKind.FunctionDeclaration) { + container.symbol.members = container.symbol.members || {}; + declareClassMember(node, SymbolFlags.Property, SymbolFlags.PropertyExcludes); + } + } + function bindPrototypePropertyAssignment(node: BinaryExpression) { // We saw a node of the form 'x.prototype.y = z'. // This does two things: turns 'x' into a constructor function, and @@ -1054,16 +1080,20 @@ namespace ts { // The function is now a constructor rather than a normal function if (!funcSymbol.inferredConstructor) { - funcSymbol.flags = (funcSymbol.flags | SymbolFlags.Class) & ~SymbolFlags.Function; + declareSymbol(container.locals, funcSymbol, funcSymbol.valueDeclaration, SymbolFlags.Class, SymbolFlags.None); + // funcSymbol.flags = (funcSymbol.flags | SymbolFlags.Class) & ~SymbolFlags.Function; funcSymbol.members = funcSymbol.members || {}; funcSymbol.members["__constructor"] = funcSymbol; funcSymbol.inferredConstructor = true; } - // Get 'y', the property name, and add it to the type of the class - let propertyName = (node.left).name; - let prototypeSymbol = declareSymbol(funcSymbol.members, funcSymbol, (node.left).expression, SymbolFlags.HasMembers, SymbolFlags.None); + // Declare the 'prototype' member of the function + let prototypeSymbol = declareSymbol(funcSymbol.exports, funcSymbol, (node.left).expression, SymbolFlags.ObjectLiteral | SymbolFlags.Property, SymbolFlags.None); + + // Declare the property on the prototype symbol declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method, SymbolFlags.None); + // and on the class type + declareSymbol(funcSymbol.members, funcSymbol, node.left, SymbolFlags.Method, SymbolFlags.PropertyExcludes); } function bindCallExpression(node: CallExpression) { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f0bdd48afa7..fb7040a96ab 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2576,9 +2576,16 @@ namespace ts { if (declaration.kind === SyntaxKind.BinaryExpression) { return links.type = checkExpression((declaration).right); } - // Handle exports.p = expr if (declaration.kind === SyntaxKind.PropertyAccessExpression) { - return checkExpressionCached((declaration.parent).right); + if (declaration.parent.kind === SyntaxKind.BinaryExpression) { + // Handle exports.p = expr or this.p = expr or className.prototype.method = expr + return links.type = checkExpression((declaration.parent).right); + } + else { + // Declaration for className.prototype in inferred JS class + let type = createAnonymousType(symbol, symbol.members, emptyArray, emptyArray, undefined, undefined); + return links.type = type; + } } // Handle variable, parameter or property if (!pushTypeResolution(symbol, TypeSystemPropertyName.Type)) { @@ -3799,8 +3806,15 @@ namespace ts { default: if (declaration.symbol.inferredConstructor) { kind = SignatureKind.Construct; - let proto = declaration.symbol.members["prototype"]; - returnType = createAnonymousType(createSymbol(SymbolFlags.None, "__jsClass"), proto.members, emptyArray, emptyArray, undefined, undefined); + let members = createSymbolTable(emptyArray); + // Collect methods declared with className.protoype.methodName = ... + let proto = declaration.symbol.exports["prototype"]; + if (proto) { + mergeSymbolTable(members, proto.members); + } + // Collect properties defined in the constructor by this.propName = ... + mergeSymbolTable(members, declaration.symbol.members); + returnType = createAnonymousType(declaration.symbol, members, emptyArray, emptyArray, undefined, undefined); } else { kind = SignatureKind.Call; @@ -3846,8 +3860,8 @@ namespace ts { break; case SyntaxKind.PropertyAccessExpression: - // Class inference from ClassName.prototype.methodName = expr - return getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); + result = getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); + break; } } return result; @@ -6957,7 +6971,10 @@ namespace ts { let operator = binaryExpression.operatorToken.kind; if (operator >= SyntaxKind.FirstAssignment && operator <= SyntaxKind.LastAssignment) { // In an assignment expression, the right operand is contextually typed by the type of the left operand. - if (node === binaryExpression.right) { + // In JS files where a special assignment is taking place, don't contextually type the RHS to avoid + // incorrectly assuming a circular 'any' (the type of the LHS is determined by the RHS) + if (node === binaryExpression.right && + !(node.parserContextFlags & ParserContextFlags.JavaScriptFile && getSpecialPropertyAssignmentKind(binaryExpression))) { return checkExpression(binaryExpression.left); } } diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 5232209e7d1..00375f8a574 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2013,6 +2013,19 @@ namespace ts { // It is optional because in contextual signature instantiation, nothing fails } + /* @internal */ + export const enum SpecialPropertyAssignmentKind { + None, + /// exports.name = expr + ExportsProperty, + /// module.exports = expr + ModuleExports, + /// className.prototype.name = expr + PrototypeProperty, + /// this.name = expr + ThisProperty + } + export interface DiagnosticMessage { key: string; category: DiagnosticCategory; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 05184e29f58..cb72e87bb94 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1057,6 +1057,42 @@ namespace ts { (expression).arguments[0].kind === SyntaxKind.StringLiteral; } + /// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property + /// assignments we treat as special in the binder + export function getSpecialPropertyAssignmentKind(expression: Node): SpecialPropertyAssignmentKind { + if (expression.kind !== SyntaxKind.BinaryExpression) { + return SpecialPropertyAssignmentKind.None; + } + const expr = expression; + if (expr.operatorToken.kind !== SyntaxKind.EqualsToken || expr.left.kind !== SyntaxKind.PropertyAccessExpression) { + return SpecialPropertyAssignmentKind.None; + } + const lhs = expr.left; + if (lhs.expression.kind === SyntaxKind.Identifier) { + const lhsId = lhs.expression; + if (lhsId.text === "exports") { + // exports.name = expr + return SpecialPropertyAssignmentKind.ExportsProperty; + } + else if (lhsId.text === "module" && lhs.name.text === "exports") { + // module.exports = expr + return SpecialPropertyAssignmentKind.ModuleExports; + } + } + else if (lhs.expression.kind === SyntaxKind.ThisKeyword) { + return SpecialPropertyAssignmentKind.ThisProperty; + } + else if (lhs.expression.kind === SyntaxKind.PropertyAccessExpression) { + // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part + let innerPropertyAccess = lhs.expression; + if (innerPropertyAccess.expression.kind === SyntaxKind.Identifier && innerPropertyAccess.name.text === "prototype") { + return SpecialPropertyAssignmentKind.PrototypeProperty; + } + } + + return SpecialPropertyAssignmentKind.None; + } + /** * Returns true if the node is an assignment to a property on the identifier 'exports'. * This function does not test if the node is in a JavaScript file or not. diff --git a/tests/cases/fourslash/javaScriptPrototype1.ts b/tests/cases/fourslash/javaScriptPrototype1.ts index 0dec8d721d6..0473d18aae8 100644 --- a/tests/cases/fourslash/javaScriptPrototype1.ts +++ b/tests/cases/fourslash/javaScriptPrototype1.ts @@ -11,26 +11,36 @@ //// //// var m = new myCtor(10); //// m/*1*/ -//// var x = m.foo(); -//// x/*2*/ -//// var y = m.bar(); -//// y/*3*/ +//// var a = m.foo; +//// a/*2*/ +//// var b = a(); +//// b/*3*/ +//// var c = m.bar(); +//// c/*4*/ + +// Members of the class instance goTo.marker('1'); edit.insert('.'); verify.memberListContains('foo', undefined, undefined, 'method'); -edit.insert('foo'); - -edit.backspace(); +verify.memberListContains('bar', undefined, undefined, 'method'); edit.backspace(); +// Members of a class method (1) goTo.marker('2'); edit.insert('.'); +verify.memberListContains('length', undefined, undefined, 'property'); +edit.backspace(); + +// Members of the invocation of a class method (1) +goTo.marker('3'); +edit.insert('.'); verify.memberListContains('toFixed', undefined, undefined, 'method'); verify.not.memberListContains('substr', undefined, undefined, 'method'); edit.backspace(); -goTo.marker('3'); +// Members of the invocation of a class method (2) +goTo.marker('4'); edit.insert('.'); verify.memberListContains('substr', undefined, undefined, 'method'); verify.not.memberListContains('toFixed', undefined, undefined, 'method'); diff --git a/tests/cases/fourslash/javaScriptPrototype2.ts b/tests/cases/fourslash/javaScriptPrototype2.ts new file mode 100644 index 00000000000..ab6afff3d2c --- /dev/null +++ b/tests/cases/fourslash/javaScriptPrototype2.ts @@ -0,0 +1,36 @@ +/// + +// Assignments to 'this' in the constructorish body create +// properties with those names + +// @allowNonTsExtensions: true +// @Filename: myMod.js +//// function myCtor(x) { +//// this.qua = 10; +//// } +//// myCtor.prototype.foo = function() { return 32 }; +//// myCtor.prototype.bar = function() { return '' }; +//// +//// var m = new myCtor(10); +//// m/*1*/ +//// var x = m.qua; +//// x/*2*/ +//// myCtor/*3*/ + +// Verify the instance property exists +goTo.marker('1'); +edit.insert('.'); +verify.completionListContains('qua', undefined, undefined, 'property'); +edit.backspace(); + +// Verify the type of the instance property +goTo.marker('2'); +edit.insert('.'); +verify.completionListContains('toFixed', undefined, undefined, 'method'); + +goTo.marker('3'); +edit.insert('.'); +// Make sure symbols don't leak out into the constructor +verify.completionListContains('qua', undefined, undefined, 'warning'); +verify.completionListContains('foo', undefined, undefined, 'warning'); +verify.completionListContains('bar', undefined, undefined, 'warning'); diff --git a/tests/cases/fourslash/javaScriptPrototype3.ts b/tests/cases/fourslash/javaScriptPrototype3.ts new file mode 100644 index 00000000000..900a39ddce9 --- /dev/null +++ b/tests/cases/fourslash/javaScriptPrototype3.ts @@ -0,0 +1,40 @@ +/// + +// ES6 classes can extend from JS classes + +// @allowNonTsExtensions: true +// @Filename: myMod.js +//// function myCtor(x) { +//// this.qua = 10; +//// } +//// myCtor.prototype.foo = function() { return 32 }; +//// myCtor.prototype.bar = function() { return '' }; +//// +//// class MyClass extends myCtor { +//// fn() { +//// this/*1*/ +//// let y = super.foo(); +//// y; +//// } +//// } +//// var n = new MyClass(3); +//// n/*2*/; + +goTo.marker('1'); +edit.insert('.'); +// Current class method +verify.completionListContains('fn', undefined, undefined, 'method'); +// Base class method +verify.completionListContains('foo', undefined, undefined, 'method'); +// Base class instance property +verify.completionListContains('qua', undefined, undefined, 'property'); +edit.backspace(); + +// Derived class instance from outside the class +goTo.marker('2'); +edit.insert('.'); +verify.completionListContains('fn', undefined, undefined, 'method'); +// Base class method +verify.completionListContains('foo', undefined, undefined, 'method'); +// Base class instance property +verify.completionListContains('qua', undefined, undefined, 'property'); diff --git a/tests/cases/fourslash/javaScriptPrototype4.ts b/tests/cases/fourslash/javaScriptPrototype4.ts new file mode 100644 index 00000000000..78eab19733a --- /dev/null +++ b/tests/cases/fourslash/javaScriptPrototype4.ts @@ -0,0 +1,36 @@ +/// + +// Check for any odd symbol leakage + +// @allowNonTsExtensions: true +// @Filename: myMod.js +//// function myCtor(x) { +//// this.qua = 10; +//// } +//// myCtor.prototype.foo = function() { return 32 }; +//// myCtor.prototype.bar = function() { return '' }; +//// +//// myCtor/*1*/ + +goTo.marker('1'); +edit.insert('.'); + +// Check members of the function +verify.completionListContains('prototype', undefined, undefined, 'property'); +verify.completionListContains('foo', undefined, undefined, 'warning'); +verify.completionListContains('bar', undefined, undefined, 'warning'); +verify.completionListContains('qua', undefined, undefined, 'warning'); + +// Check members of function.prototype +edit.insert('prototype.'); +debugger; +debug.printMemberListMembers(); +verify.completionListContains('foo', undefined, undefined, 'method'); +verify.completionListContains('bar', undefined, undefined, 'method'); +verify.completionListContains('qua', undefined, undefined, 'warning'); +verify.completionListContains('prototype', undefined, undefined, 'warning'); + +// debug.printErrorList(); +// debug.printCurrentQuickInfo(); +// edit.insert('.'); +// verify.completionListContains('toFixed', undefined, undefined, 'method'); From a3a5c1619d6371cd9b093f71ab83abc1d485d856 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 30 Oct 2015 12:35:20 -0700 Subject: [PATCH 023/265] Human-readable fourslash debug output for completion lists / quickinfo --- src/harness/fourslash.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index dd2dde6989c..8564714801a 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -1265,7 +1265,7 @@ namespace FourSlash { public printCurrentQuickInfo() { let quickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition); - Harness.IO.log(JSON.stringify(quickInfo)); + Harness.IO.log("Quick Info: " + quickInfo.displayParts.map(part => part.text).join("")); } public printErrorList() { @@ -1307,12 +1307,26 @@ namespace FourSlash { public printMemberListMembers() { let members = this.getMemberListAtCaret(); - Harness.IO.log(JSON.stringify(members)); + this.printMembersOrCompletions(members); } public printCompletionListMembers() { let completions = this.getCompletionListAtCaret(); - Harness.IO.log(JSON.stringify(completions)); + this.printMembersOrCompletions(completions); + } + + private printMembersOrCompletions(info: ts.CompletionInfo) { + function pad(s: string, length: number) { + return s + new Array(length - s.length + 1).join(" "); + } + function max(arr: T[], selector: (x: T) => number): number { + return arr.reduce((prev, x) => Math.max(prev, selector(x)), 0); + } + let longestNameLength = max(info.entries, m => m.name.length); + let longestKindLength = max(info.entries, m => m.kind.length); + info.entries.sort((m, n) => m.sortText > n.sortText ? 1 : m.sortText < n.sortText ? -1 : m.name > n.name ? 1 : m.name < n.name ? -1 : 0); + let membersString = info.entries.map(m => `${pad(m.name, longestNameLength)} ${pad(m.kind, longestKindLength)} ${m.kindModifiers}`).join("\n"); + Harness.IO.log(membersString); } public printReferences() { From a531610eb91d6497a26919e8629ac19796b36a72 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Mon, 9 Nov 2015 10:46:50 -0800 Subject: [PATCH 024/265] fix merge issue --- src/compiler/emitter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 4c594da1fa5..49d6236805f 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -580,7 +580,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi externalImports = undefined; exportSpecifiers = undefined; exportEquals = undefined; - hasExportStars = undefined; + hasExportStarsToExportValues = undefined; detachedCommentsInfo = undefined; sourceMapData = undefined; isEs6Module = false; From eaeeb1f7624f9be5287544659debdbda40df8824 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Mon, 9 Nov 2015 15:19:41 -0800 Subject: [PATCH 025/265] Fix TC --- tests/cases/fourslash/javaScriptPrototype4.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/cases/fourslash/javaScriptPrototype4.ts b/tests/cases/fourslash/javaScriptPrototype4.ts index 78eab19733a..f78bf52438b 100644 --- a/tests/cases/fourslash/javaScriptPrototype4.ts +++ b/tests/cases/fourslash/javaScriptPrototype4.ts @@ -23,14 +23,9 @@ verify.completionListContains('qua', undefined, undefined, 'warning'); // Check members of function.prototype edit.insert('prototype.'); -debugger; debug.printMemberListMembers(); verify.completionListContains('foo', undefined, undefined, 'method'); verify.completionListContains('bar', undefined, undefined, 'method'); verify.completionListContains('qua', undefined, undefined, 'warning'); verify.completionListContains('prototype', undefined, undefined, 'warning'); -// debug.printErrorList(); -// debug.printCurrentQuickInfo(); -// edit.insert('.'); -// verify.completionListContains('toFixed', undefined, undefined, 'method'); From cb152003782114103ff4a3472d62381139e33dfa Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 10 Nov 2015 16:58:10 -0800 Subject: [PATCH 026/265] fix lints --- src/compiler/checker.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3ba60d9a4a2..929b1f706c0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14009,14 +14009,14 @@ namespace ts { const declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } - let exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts - for (let id in exports) { + const exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts + for (const id in exports) { if (id === "__export") continue; - let exportedSymbol = exports[id]; + const exportedSymbol = exports[id]; // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) if (!(exportedSymbol.flags & SymbolFlags.Namespace || exportedSymbol.flags & SymbolFlags.Interface || exportedSymbol.flags & SymbolFlags.Enum) && exportedSymbol.declarations.length > 1) { - let exportedDeclarations: Declaration[] = []; - for (let declaration of exportedSymbol.declarations) { + const exportedDeclarations: Declaration[] = []; + for (const declaration of exportedSymbol.declarations) { if (declaration.kind === SyntaxKind.FunctionDeclaration) { if (!(declaration as FunctionDeclaration).body) { continue; @@ -14025,7 +14025,7 @@ namespace ts { exportedDeclarations.push(declaration); } if (exportedDeclarations.length > 1) { - for (let declaration of exportedDeclarations) { + for (const declaration of exportedDeclarations) { diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Cannot_redeclare_exported_variable_0, id)); } } From 65b90686e79e438a1e26cef48ac67d209e8020f6 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 10 Nov 2015 17:06:00 -0800 Subject: [PATCH 027/265] accept new baselines --- .../reference/multipleDefaultExports04.errors.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/baselines/reference/multipleDefaultExports04.errors.txt b/tests/baselines/reference/multipleDefaultExports04.errors.txt index e67659f6b9f..bf137e3cc17 100644 --- a/tests/baselines/reference/multipleDefaultExports04.errors.txt +++ b/tests/baselines/reference/multipleDefaultExports04.errors.txt @@ -1,15 +1,21 @@ +tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(2,25): error TS2323: Cannot redeclare exported variable 'default'. tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(2,25): error TS2393: Duplicate function implementation. +tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(5,25): error TS2323: Cannot redeclare exported variable 'default'. tests/cases/conformance/es6/modules/multipleDefaultExports04.ts(5,25): error TS2393: Duplicate function implementation. -==== tests/cases/conformance/es6/modules/multipleDefaultExports04.ts (2 errors) ==== +==== tests/cases/conformance/es6/modules/multipleDefaultExports04.ts (4 errors) ==== export default function f() { ~ +!!! error TS2323: Cannot redeclare exported variable 'default'. + ~ !!! error TS2393: Duplicate function implementation. } export default function f() { ~ +!!! error TS2323: Cannot redeclare exported variable 'default'. + ~ !!! error TS2393: Duplicate function implementation. } \ No newline at end of file From b91a5a510096c04d13289333efe7816d24f461e7 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Nov 2015 13:17:20 -0800 Subject: [PATCH 028/265] factor for loop into filter, minor style changes --- src/compiler/checker.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 929b1f706c0..0b72b8c3db3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1103,9 +1103,10 @@ namespace ts { ); } for (const id in lookupTable) { + const { exportsWithDuplicate } = lookupTable[id]; // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself - if (id !== "export=" && lookupTable[id].exportsWithDuplicate.length && !(id in symbols)) { - for (const node of lookupTable[id].exportsWithDuplicate) { + if (id !== "export=" && exportsWithDuplicate.length && !(id in symbols)) { + for (const node of exportsWithDuplicate) { diagnostics.add(createDiagnosticForNode( node, Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, @@ -14009,21 +14010,16 @@ namespace ts { const declaration = getDeclarationOfAliasSymbol(exportEqualsSymbol) || exportEqualsSymbol.valueDeclaration; error(declaration, Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements); } - const exports = getExportsOfModule(moduleSymbol); // Checks for export * conflicts + // Checks for export * conflicts + const exports = getExportsOfModule(moduleSymbol); for (const id in exports) { - if (id === "__export") continue; + if (id === "__export") { + continue; + } const exportedSymbol = exports[id]; // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) if (!(exportedSymbol.flags & SymbolFlags.Namespace || exportedSymbol.flags & SymbolFlags.Interface || exportedSymbol.flags & SymbolFlags.Enum) && exportedSymbol.declarations.length > 1) { - const exportedDeclarations: Declaration[] = []; - for (const declaration of exportedSymbol.declarations) { - if (declaration.kind === SyntaxKind.FunctionDeclaration) { - if (!(declaration as FunctionDeclaration).body) { - continue; - } - } - exportedDeclarations.push(declaration); - } + const exportedDeclarations: Declaration[] = filter(exportedSymbol.declarations, isNotOverload); if (exportedDeclarations.length > 1) { for (const declaration of exportedDeclarations) { diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Cannot_redeclare_exported_variable_0, id)); @@ -14033,6 +14029,10 @@ namespace ts { } links.exportsChecked = true; } + + function isNotOverload(declaration: Declaration): boolean { + return (declaration.kind !== SyntaxKind.FunctionDeclaration || typeof (declaration as FunctionDeclaration).body !== "undefined"); + } } function checkTypePredicate(node: TypePredicateNode) { From d9c6f3d6c64abe93ee9b3e71e67d72217ce36bc2 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 19 Nov 2015 13:20:58 -0800 Subject: [PATCH 029/265] invert the conditional I was asked to invert --- src/compiler/checker.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f6e1da3e9ea..d95d3e07686 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1143,15 +1143,16 @@ namespace ts { for (const id in lookupTable) { const { exportsWithDuplicate } = lookupTable[id]; // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself - if (id !== "export=" && exportsWithDuplicate.length && !(id in symbols)) { - for (const node of exportsWithDuplicate) { - diagnostics.add(createDiagnosticForNode( - node, - Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, - lookupTable[id].specifierText, - id - )); - } + if (id === "export=" || !exportsWithDuplicate.length || id in symbols) { + continue; + } + for (const node of exportsWithDuplicate) { + diagnostics.add(createDiagnosticForNode( + node, + Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, + lookupTable[id].specifierText, + id + )); } } extendExportSymbols(symbols, nestedSymbols); From fb83ee0a3036687115f505d621a8022eaca95e07 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Fri, 20 Nov 2015 10:59:13 -0800 Subject: [PATCH 030/265] WIP --- src/compiler/binder.ts | 20 ++++--- src/compiler/checker.ts | 5 +- src/compiler/utilities.ts | 58 ------------------- tests/cases/fourslash/javaScriptPrototype4.ts | 1 - 4 files changed, 16 insertions(+), 68 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 9bd51f0c763..f91cf107749 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -635,7 +635,6 @@ namespace ts { function bindAnonymousDeclaration(node: Declaration, symbolFlags: SymbolFlags, name: string) { let symbol = createSymbol(symbolFlags, name); addDeclarationToSymbol(symbol, node, symbolFlags); - return symbol; } function bindBlockScopedDeclaration(node: Declaration, symbolFlags: SymbolFlags, symbolExcludes: SymbolFlags) { @@ -889,6 +888,11 @@ namespace ts { case SpecialPropertyAssignmentKind.ThisProperty: bindThisPropertyAssignment(node); break; + case SpecialPropertyAssignmentKind.None: + // Nothing to do + break; + default: + Debug.fail("Unknown special property assignment kind"); } } return checkStrictModeBinaryExpression(node); @@ -1080,19 +1084,19 @@ namespace ts { // The function is now a constructor rather than a normal function if (!funcSymbol.inferredConstructor) { + // Have the binder set up all the related class symbols for us declareSymbol(container.locals, funcSymbol, funcSymbol.valueDeclaration, SymbolFlags.Class, SymbolFlags.None); - // funcSymbol.flags = (funcSymbol.flags | SymbolFlags.Class) & ~SymbolFlags.Function; - funcSymbol.members = funcSymbol.members || {}; + // funcSymbol.members = funcSymbol.members || {}; funcSymbol.members["__constructor"] = funcSymbol; funcSymbol.inferredConstructor = true; } - // Declare the 'prototype' member of the function - let prototypeSymbol = declareSymbol(funcSymbol.exports, funcSymbol, (node.left).expression, SymbolFlags.ObjectLiteral | SymbolFlags.Property, SymbolFlags.None); + // Get the exports of the class so we can add the method to it + let funcExports = declareSymbol(funcSymbol.exports, funcSymbol, (node.left).expression, SymbolFlags.ObjectLiteral | SymbolFlags.Property, SymbolFlags.None); - // Declare the property on the prototype symbol - declareSymbol(prototypeSymbol.members, prototypeSymbol, node.left, SymbolFlags.Method, SymbolFlags.None); - // and on the class type + // Declare the method + declareSymbol(funcExports.members, funcExports, node.left, SymbolFlags.Method, SymbolFlags.None); + // and on the members of the function so it appears in 'prototype' declareSymbol(funcSymbol.members, funcSymbol, node.left, SymbolFlags.Method, SymbolFlags.PropertyExcludes); } diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index fb7040a96ab..18a878ae91b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2577,9 +2577,11 @@ namespace ts { return links.type = checkExpression((declaration).right); } if (declaration.kind === SyntaxKind.PropertyAccessExpression) { + // Declarations only exist for property access expressions for certain + // special assignment kinds if (declaration.parent.kind === SyntaxKind.BinaryExpression) { // Handle exports.p = expr or this.p = expr or className.prototype.method = expr - return links.type = checkExpression((declaration.parent).right); + return links.type = checkExpressionCached((declaration.parent).right); } else { // Declaration for className.prototype in inferred JS class @@ -3860,6 +3862,7 @@ namespace ts { break; case SyntaxKind.PropertyAccessExpression: + // Inferred class method result = getSignaturesOfType(checkExpressionCached((node.parent).right), SignatureKind.Call); break; } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index cb72e87bb94..603f5a3d93c 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1093,64 +1093,6 @@ namespace ts { return SpecialPropertyAssignmentKind.None; } - /** - * Returns true if the node is an assignment to a property on the identifier 'exports'. - * This function does not test if the node is in a JavaScript file or not. - */ - export function isExportsPropertyAssignment(expression: Node): boolean { - // of the form 'exports.name = expr' where 'name' and 'expr' are arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === SyntaxKind.BinaryExpression) && - ((expression).operatorToken.kind === SyntaxKind.EqualsToken) && - ((expression).left.kind === SyntaxKind.PropertyAccessExpression) && - (((expression).left).expression.kind === SyntaxKind.Identifier) && - (((((expression).left).expression)).text === "exports"); - } - - /** - * Returns true if the node is an assignment to the property access expression 'module.exports'. - * This function does not test if the node is in a JavaScript file or not. - */ - export function isModuleExportsAssignment(expression: Node): boolean { - // of the form 'module.exports = expr' where 'expr' is arbitrary - return isInJavaScriptFile(expression) && - (expression.kind === SyntaxKind.BinaryExpression) && - ((expression).operatorToken.kind === SyntaxKind.EqualsToken) && - ((expression).left.kind === SyntaxKind.PropertyAccessExpression) && - (((expression).left).expression.kind === SyntaxKind.Identifier) && - (((((expression).left).expression)).text === "module") && - (((expression).left).name.text === "exports"); - } - - /** - * Returns true if this expression is an assignment to the given named property - */ - function isAssignmentToProperty(expression: Node, name?: string): expression is BinaryExpression { - return (expression.kind === SyntaxKind.BinaryExpression) && - ((expression).operatorToken.kind === SyntaxKind.EqualsToken) && - isNamedPropertyAccess((expression).left, name); - } - - /** - * Returns true if this expression is a PropertyAccessExpression where the property name is the provided name - */ - function isNamedPropertyAccess(expression: Node, name?: string): expression is PropertyAccessExpression { - return expression.kind === SyntaxKind.PropertyAccessExpression && - (!name || (expression).name.text === name); - } - - /** - * Returns true if the node is an assignment in the form 'id1.prototype.id2 = expr' where id1 and id2 - * are any identifier. - * This function does not test if the node is in a JavaScript file or not. - */ - export function isPrototypePropertyAssignment(expression: Node): expression is BinaryExpression { - return isAssignmentToProperty(expression) && - isNamedPropertyAccess(expression.left) && - isNamedPropertyAccess((expression.left).expression, "prototype") && - ((expression.left).expression).expression.kind === SyntaxKind.Identifier; - } - export function getExternalModuleName(node: Node): Expression { if (node.kind === SyntaxKind.ImportDeclaration) { return (node).moduleSpecifier; diff --git a/tests/cases/fourslash/javaScriptPrototype4.ts b/tests/cases/fourslash/javaScriptPrototype4.ts index f78bf52438b..3ed723740b4 100644 --- a/tests/cases/fourslash/javaScriptPrototype4.ts +++ b/tests/cases/fourslash/javaScriptPrototype4.ts @@ -23,7 +23,6 @@ verify.completionListContains('qua', undefined, undefined, 'warning'); // Check members of function.prototype edit.insert('prototype.'); -debug.printMemberListMembers(); verify.completionListContains('foo', undefined, undefined, 'method'); verify.completionListContains('bar', undefined, undefined, 'method'); verify.completionListContains('qua', undefined, undefined, 'warning'); From d0fc3948b58d006ef003174af7e1c3e7c7b084e1 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 12:22:08 -0800 Subject: [PATCH 031/265] Correct comments, use destructuring --- src/compiler/checker.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d95d3e07686..2a853611a43 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1142,7 +1142,7 @@ namespace ts { } for (const id in lookupTable) { const { exportsWithDuplicate } = lookupTable[id]; - // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + // Its not an error if the file with multiple export *'s with duplicate names exports a member with that name itself if (id === "export=" || !exportsWithDuplicate.length || id in symbols) { continue; } @@ -14079,10 +14079,10 @@ namespace ts { if (id === "__export") { continue; } - const exportedSymbol = exports[id]; - // 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) - if (!(exportedSymbol.flags & SymbolFlags.Namespace || exportedSymbol.flags & SymbolFlags.Interface || exportedSymbol.flags & SymbolFlags.Enum) && exportedSymbol.declarations.length > 1) { - const exportedDeclarations: Declaration[] = filter(exportedSymbol.declarations, isNotOverload); + const {declarations, flags} = exports[id]; + // ECMA262: 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) + if (!(flags & (SymbolFlags.Namespace |SymbolFlags.Interface | SymbolFlags.Enum)) && declarations.length > 1) { + const exportedDeclarations: Declaration[] = filter(declarations, isNotOverload); if (exportedDeclarations.length > 1) { for (const declaration of exportedDeclarations) { diagnostics.add(createDiagnosticForNode(declaration, Diagnostics.Cannot_redeclare_exported_variable_0, id)); From 6a8e78cdc08ea1c8b4b1b9654638b9517153ef56 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 12:43:28 -0800 Subject: [PATCH 032/265] fix ES6 emit for namespaces to only emit one export binding --- src/compiler/emitter.ts | 19 +++++++++++-------- .../es6ModuleInternalNamedImports2.js | 1 - 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index bdeac582bbf..83d3e24351e 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6318,15 +6318,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi const emitVarForModule = !hoistedInDeclarationScope && !isModuleMergedWithES6Class(node); if (emitVarForModule) { - emitStart(node); - if (isES6ExportedDeclaration(node)) { - write("export "); + const isES6ExportedNamespace = isES6ExportedDeclaration(node); + if ((!isES6ExportedNamespace) || !forEach(node.symbol && node.symbol.declarations, declaration => declaration.kind === SyntaxKind.ModuleDeclaration && declaration.pos < node.pos)) { + emitStart(node); + if (isES6ExportedNamespace) { + write("export "); + } + write("var "); + emit(node.name); + write(";"); + emitEnd(node); + writeLine(); } - write("var "); - emit(node.name); - write(";"); - emitEnd(node); - writeLine(); } emitStart(node); diff --git a/tests/baselines/reference/es6ModuleInternalNamedImports2.js b/tests/baselines/reference/es6ModuleInternalNamedImports2.js index 9dee8153e56..98226a1e52b 100644 --- a/tests/baselines/reference/es6ModuleInternalNamedImports2.js +++ b/tests/baselines/reference/es6ModuleInternalNamedImports2.js @@ -58,7 +58,6 @@ export var M; // alias M.M_A = M_M; })(M || (M = {})); -export var M; (function (M) { // Reexports export { M_V as v }; From 60234342d58b06f7a51b6feaa149dc35f9e76ecb Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 12:44:49 -0800 Subject: [PATCH 033/265] fix whitespace --- src/compiler/checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 2a853611a43..289265b7572 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14081,7 +14081,7 @@ namespace ts { } const {declarations, flags} = exports[id]; // ECMA262: 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) - if (!(flags & (SymbolFlags.Namespace |SymbolFlags.Interface | SymbolFlags.Enum)) && declarations.length > 1) { + if (!(flags & (SymbolFlags.Namespace | SymbolFlags.Interface | SymbolFlags.Enum)) && declarations.length > 1) { const exportedDeclarations: Declaration[] = filter(declarations, isNotOverload); if (exportedDeclarations.length > 1) { for (const declaration of exportedDeclarations) { From a9be53093c9de71ebb857a0469a97bac59855d87 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 12:55:29 -0800 Subject: [PATCH 034/265] change enum emit --- src/compiler/emitter.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 83d3e24351e..f31885dcd03 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6206,9 +6206,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (!shouldHoistDeclarationInSystemJsModule(node)) { // do not emit var if variable was already hoisted - if (!(node.flags & NodeFlags.Export) || isES6ExportedDeclaration(node)) { + + const isES6ExportedEnum = isES6ExportedDeclaration(node); + if (!(node.flags & NodeFlags.Export) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.ModuleDeclaration))) { emitStart(node); - if (isES6ExportedDeclaration(node)) { + if (isES6ExportedEnum) { write("export "); } write("var "); @@ -6307,6 +6309,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi return languageVersion === ScriptTarget.ES6 && !!(resolver.getNodeCheckFlags(node) & NodeCheckFlags.LexicalModuleMergesWithClass); } + function isFirstDeclarationOfKind(node: Declaration, declarations: Declaration[], kind: SyntaxKind) { + return !forEach(declarations, declaration => declaration.kind === kind && declaration.pos < node.pos); + } + function emitModuleDeclaration(node: ModuleDeclaration) { // Emit only if this module is non-ambient. const shouldEmit = shouldEmitModuleDeclaration(node); @@ -6319,7 +6325,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (emitVarForModule) { const isES6ExportedNamespace = isES6ExportedDeclaration(node); - if ((!isES6ExportedNamespace) || !forEach(node.symbol && node.symbol.declarations, declaration => declaration.kind === SyntaxKind.ModuleDeclaration && declaration.pos < node.pos)) { + if ((!isES6ExportedNamespace) || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.ModuleDeclaration)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); From 3b6fa314da2a1cac1dedc4e83a056e7ce8ab334e Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 13:12:34 -0800 Subject: [PATCH 035/265] new tests --- src/compiler/emitter.ts | 2 +- .../reference/enumExportMergingES6.js | 23 +++++++++++++++++ .../reference/enumExportMergingES6.symbols | 22 ++++++++++++++++ .../reference/enumExportMergingES6.types | 25 +++++++++++++++++++ .../conformance/enums/enumExportMergingES6.ts | 10 ++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/enumExportMergingES6.js create mode 100644 tests/baselines/reference/enumExportMergingES6.symbols create mode 100644 tests/baselines/reference/enumExportMergingES6.types create mode 100644 tests/cases/conformance/enums/enumExportMergingES6.ts diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index f31885dcd03..64af2c71442 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6208,7 +6208,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // do not emit var if variable was already hoisted const isES6ExportedEnum = isES6ExportedDeclaration(node); - if (!(node.flags & NodeFlags.Export) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.ModuleDeclaration))) { + if ((!(node.flags & NodeFlags.Export)) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.EnumDeclaration))) { emitStart(node); if (isES6ExportedEnum) { write("export "); diff --git a/tests/baselines/reference/enumExportMergingES6.js b/tests/baselines/reference/enumExportMergingES6.js new file mode 100644 index 00000000000..7a5ea5f2718 --- /dev/null +++ b/tests/baselines/reference/enumExportMergingES6.js @@ -0,0 +1,23 @@ +//// [enumExportMergingES6.ts] +export enum Animals { + Cat = 1 +} +export enum Animals { + Dog = 2 +} +export enum Animals { + CatDog = Cat | Dog +} + + +//// [enumExportMergingES6.js] +export var Animals; +(function (Animals) { + Animals[Animals["Cat"] = 1] = "Cat"; +})(Animals || (Animals = {})); +(function (Animals) { + Animals[Animals["Dog"] = 2] = "Dog"; +})(Animals || (Animals = {})); +(function (Animals) { + Animals[Animals["CatDog"] = 3] = "CatDog"; +})(Animals || (Animals = {})); diff --git a/tests/baselines/reference/enumExportMergingES6.symbols b/tests/baselines/reference/enumExportMergingES6.symbols new file mode 100644 index 00000000000..66fc31c5e18 --- /dev/null +++ b/tests/baselines/reference/enumExportMergingES6.symbols @@ -0,0 +1,22 @@ +=== tests/cases/conformance/enums/enumExportMergingES6.ts === +export enum Animals { +>Animals : Symbol(Animals, Decl(enumExportMergingES6.ts, 0, 0), Decl(enumExportMergingES6.ts, 2, 1), Decl(enumExportMergingES6.ts, 5, 1)) + + Cat = 1 +>Cat : Symbol(Animals.Cat, Decl(enumExportMergingES6.ts, 0, 21)) +} +export enum Animals { +>Animals : Symbol(Animals, Decl(enumExportMergingES6.ts, 0, 0), Decl(enumExportMergingES6.ts, 2, 1), Decl(enumExportMergingES6.ts, 5, 1)) + + Dog = 2 +>Dog : Symbol(Animals.Dog, Decl(enumExportMergingES6.ts, 3, 21)) +} +export enum Animals { +>Animals : Symbol(Animals, Decl(enumExportMergingES6.ts, 0, 0), Decl(enumExportMergingES6.ts, 2, 1), Decl(enumExportMergingES6.ts, 5, 1)) + + CatDog = Cat | Dog +>CatDog : Symbol(Animals.CatDog, Decl(enumExportMergingES6.ts, 6, 21)) +>Cat : Symbol(Animals.Cat, Decl(enumExportMergingES6.ts, 0, 21)) +>Dog : Symbol(Animals.Dog, Decl(enumExportMergingES6.ts, 3, 21)) +} + diff --git a/tests/baselines/reference/enumExportMergingES6.types b/tests/baselines/reference/enumExportMergingES6.types new file mode 100644 index 00000000000..da2fc22cb8a --- /dev/null +++ b/tests/baselines/reference/enumExportMergingES6.types @@ -0,0 +1,25 @@ +=== tests/cases/conformance/enums/enumExportMergingES6.ts === +export enum Animals { +>Animals : Animals + + Cat = 1 +>Cat : Animals +>1 : number +} +export enum Animals { +>Animals : Animals + + Dog = 2 +>Dog : Animals +>2 : number +} +export enum Animals { +>Animals : Animals + + CatDog = Cat | Dog +>CatDog : Animals +>Cat | Dog : number +>Cat : Animals +>Dog : Animals +} + diff --git a/tests/cases/conformance/enums/enumExportMergingES6.ts b/tests/cases/conformance/enums/enumExportMergingES6.ts new file mode 100644 index 00000000000..0a5185ecdd5 --- /dev/null +++ b/tests/cases/conformance/enums/enumExportMergingES6.ts @@ -0,0 +1,10 @@ +// @target: es6 +export enum Animals { + Cat = 1 +} +export enum Animals { + Dog = 2 +} +export enum Animals { + CatDog = Cat | Dog +} From f782c82ba3f1fcb4d80b9e0a1c9440d4f04d6786 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 23 Nov 2015 17:02:01 -0800 Subject: [PATCH 036/265] Add comments, change error message --- src/compiler/checker.ts | 14 +++++++++----- src/compiler/diagnosticMessages.json | 2 +- .../baselines/reference/exportStar-amd.errors.txt | 8 ++++---- tests/baselines/reference/exportStar.errors.txt | 8 ++++---- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 289265b7572..70b39980882 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1093,12 +1093,16 @@ namespace ts { return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol)); } - interface ExportedSymbolDiagnostics { + interface ExportCollisionTracker { specifierText: string; exportsWithDuplicate: ExportDeclaration[]; } - function extendExportSymbols(target: SymbolTable, source: SymbolTable, lookupTable?: Map, exportNode?: ExportDeclaration) { + /** + * Extends one symbol table with abother while collecting information on name collisions for error message generation into the `lookupTable` argument + * Not passing `lookupTable` and `exportNode` disables this collection, and just extends the tables + */ + function extendExportSymbols(target: SymbolTable, source: SymbolTable, lookupTable?: Map, exportNode?: ExportDeclaration) { for (const id in source) { if (id !== "default" && !hasProperty(target, id)) { target[id] = source[id]; @@ -1129,7 +1133,7 @@ namespace ts { const exportStars = symbol.exports["__export"]; if (exportStars) { const nestedSymbols: SymbolTable = {}; - const lookupTable: Map = {}; + const lookupTable: Map = {}; for (const node of exportStars.declarations) { const resolvedModule = resolveExternalModuleName(node, (node as ExportDeclaration).moduleSpecifier); const exportedSymbols = visit(resolvedModule); @@ -1149,7 +1153,7 @@ namespace ts { for (const node of exportsWithDuplicate) { diagnostics.add(createDiagnosticForNode( node, - Diagnostics.An_export_Asterisk_from_0_declaration_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, + Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity, lookupTable[id].specifierText, id )); @@ -14094,7 +14098,7 @@ namespace ts { } function isNotOverload(declaration: Declaration): boolean { - return (declaration.kind !== SyntaxKind.FunctionDeclaration || typeof (declaration as FunctionDeclaration).body !== "undefined"); + return declaration.kind !== SyntaxKind.FunctionDeclaration || !!(declaration as FunctionDeclaration).body; } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index a0976e6cc6a..b2a63085ae4 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -836,7 +836,7 @@ "category": "Error", "code": 2307 }, - "An `export * from {0}` declaration has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { + "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { "category": "Error", "code": 2308 }, diff --git a/tests/baselines/reference/exportStar-amd.errors.txt b/tests/baselines/reference/exportStar-amd.errors.txt index 714890d5a14..edd5c0d51bd 100644 --- a/tests/baselines/reference/exportStar-amd.errors.txt +++ b/tests/baselines/reference/exportStar-amd.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -23,9 +23,9 @@ tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from export * from "./t2"; export * from "./t3"; ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; diff --git a/tests/baselines/reference/exportStar.errors.txt b/tests/baselines/reference/exportStar.errors.txt index 714890d5a14..edd5c0d51bd 100644 --- a/tests/baselines/reference/exportStar.errors.txt +++ b/tests/baselines/reference/exportStar.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/es6/modules/main.ts(1,8): error TS1192: Module '"tests/cases/conformance/es6/modules/t4"' has no default export. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. -tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/t1.ts (0 errors) ==== @@ -23,9 +23,9 @@ tests/cases/conformance/es6/modules/t4.ts(3,1): error TS2308: An `export * from export * from "./t2"; export * from "./t3"; ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: Module "./t1" has already exported a member named 'x'. Consider explicitly re-exporting to resolve the ambiguity. ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2308: An `export * from "./t1"` declaration has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. +!!! error TS2308: Module "./t1" has already exported a member named 'y'. Consider explicitly re-exporting to resolve the ambiguity. ==== tests/cases/conformance/es6/modules/main.ts (1 errors) ==== import hello, { x, y, z, foo } from "./t4"; From c35f7da0fa8c70391e3f23d90f76ee83fd8d69d9 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 24 Nov 2015 09:34:20 -0800 Subject: [PATCH 037/265] Elaborate interface signature errors Signature errors were not reported before. --- src/compiler/checker.ts | 29 +++++++++++++++++----------- src/compiler/diagnosticMessages.json | 4 ++++ src/compiler/types.ts | 2 +- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 99f60ee15ce..81e1a14bdf6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1515,9 +1515,9 @@ namespace ts { return result; } - function signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string { + function signatureToString(signature: Signature, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): string { const writer = getSingleLineStringWriter(); - getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags); + getSymbolDisplayBuilder().buildSignatureDisplay(signature, writer, enclosingDeclaration, flags, kind); const result = writer.string(); releaseStringWriter(writer); @@ -1869,7 +1869,7 @@ namespace ts { if (flags & TypeFormatFlags.InElementType) { writePunctuation(writer, SyntaxKind.OpenParenToken); } - buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | TypeFormatFlags.WriteArrowStyleSignature, symbolStack); + buildSignatureDisplay(resolved.callSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | TypeFormatFlags.WriteArrowStyleSignature, /*kind*/ undefined, symbolStack); if (flags & TypeFormatFlags.InElementType) { writePunctuation(writer, SyntaxKind.CloseParenToken); } @@ -1881,7 +1881,7 @@ namespace ts { } writeKeyword(writer, SyntaxKind.NewKeyword); writeSpace(writer); - buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | TypeFormatFlags.WriteArrowStyleSignature, symbolStack); + buildSignatureDisplay(resolved.constructSignatures[0], writer, enclosingDeclaration, globalFlagsToPass | TypeFormatFlags.WriteArrowStyleSignature, /*kind*/ undefined, symbolStack); if (flags & TypeFormatFlags.InElementType) { writePunctuation(writer, SyntaxKind.CloseParenToken); } @@ -1895,15 +1895,12 @@ namespace ts { writer.writeLine(); writer.increaseIndent(); for (const signature of resolved.callSignatures) { - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } for (const signature of resolved.constructSignatures) { - writeKeyword(writer, SyntaxKind.NewKeyword); - writeSpace(writer); - - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, SignatureKind.Construct, symbolStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } @@ -1944,7 +1941,7 @@ namespace ts { if (p.flags & SymbolFlags.Optional) { writePunctuation(writer, SyntaxKind.QuestionToken); } - buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, symbolStack); + buildSignatureDisplay(signature, writer, enclosingDeclaration, globalFlagsToPass, /*kind*/ undefined, symbolStack); writePunctuation(writer, SyntaxKind.SemicolonToken); writer.writeLine(); } @@ -2064,7 +2061,12 @@ namespace ts { buildTypeDisplay(returnType, writer, enclosingDeclaration, flags, symbolStack); } - function buildSignatureDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) { + function buildSignatureDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind, symbolStack?: Symbol[]) { + if (kind === SignatureKind.Construct) { + writeKeyword(writer, SyntaxKind.NewKeyword); + writeSpace(writer); + } + if (signature.target && (flags & TypeFormatFlags.WriteTypeArgumentsOfSignature)) { // Instantiated signature, write type arguments instead // This is achieved by passing in the mapper separately @@ -5451,6 +5453,11 @@ namespace ts { localErrors = false; } } + if (reportErrors) { + reportError(Diagnostics.Signature_0_has_no_corresponding_signature_in_1, + signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind), + typeToString(source)); + } return Ternary.False; } } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 5b70c70ae4b..d0e62b353c6 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1724,6 +1724,10 @@ "category": "Error", "code": 2657 }, + "Signature '{0}' has no corresponding signature in '{1}'": { + "category": "Error", + "code": 2658 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", "code": 4000 diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 9edd7654b6b..37080d581da 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1740,7 +1740,7 @@ namespace ts { export interface SymbolDisplayBuilder { buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildSymbolDisplay(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): void; - buildSignatureDisplay(signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; + buildSignatureDisplay(signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, kind?: SignatureKind): void; buildParameterDisplay(parameter: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void; buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags): void; From 772f8dd26d8d3bdc56e51f01c75cd569e68a8a1d Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 24 Nov 2015 09:37:12 -0800 Subject: [PATCH 038/265] Accept baselines --- ...addMoreOverloadsToBaseSignature.errors.txt | 2 + .../arityAndOrderCompatibility01.errors.txt | 20 +- ...teralExpressionContextualTyping.errors.txt | 10 +- .../reference/arrayLiterals3.errors.txt | 28 +- .../asOperatorContextualType.errors.txt | 6 +- .../assignFromBooleanInterface2.errors.txt | 6 +- .../baselines/reference/assignToFn.errors.txt | 2 + ...nmentCompatBetweenTupleAndArray.errors.txt | 10 +- .../reference/assignmentCompatBug5.errors.txt | 16 +- ...ignmentCompatWithCallSignatures.errors.txt | 80 +++--- ...gnmentCompatWithCallSignatures2.errors.txt | 40 +-- ...gnmentCompatWithCallSignatures4.errors.txt | 38 +-- ...ignaturesWithOptionalParameters.errors.txt | 14 + ...allSignaturesWithRestParameters.errors.txt | 90 ++++--- ...ntCompatWithConstructSignatures.errors.txt | 16 ++ ...tCompatWithConstructSignatures2.errors.txt | 8 + ...tCompatWithConstructSignatures4.errors.txt | 82 +++--- ...ignaturesWithOptionalParameters.errors.txt | 10 + ...ignaturesWithOptionalParameters.errors.txt | 12 + .../assignmentCompatWithOverloads.errors.txt | 36 ++- .../assignmentCompatability24.errors.txt | 4 +- .../assignmentCompatability33.errors.txt | 4 +- .../assignmentCompatability34.errors.txt | 4 +- .../assignmentCompatability37.errors.txt | 4 +- .../assignmentCompatability38.errors.txt | 4 +- .../reference/assignmentToObject.errors.txt | 2 + .../assignmentToObjectAndFunction.errors.txt | 6 +- .../asyncFunctionDeclaration15_es6.errors.txt | 20 +- .../reference/booleanAssignment.errors.txt | 18 +- .../callConstructAssignment.errors.txt | 6 +- ...atureAssignabilityInInheritance.errors.txt | 6 +- ...tureAssignabilityInInheritance3.errors.txt | 38 +-- .../reference/castingTuple.errors.txt | 10 +- ...ConstrainedToOtherTypeParameter.errors.txt | 10 +- ...onstrainedToOtherTypeParameter2.errors.txt | 12 +- ...ssignabilityConstructorFunction.errors.txt | 4 +- .../classSideInheritance3.errors.txt | 4 + ...onalOperatorWithoutIdenticalBCT.errors.txt | 18 +- ...atureAssignabilityInInheritance.errors.txt | 6 +- ...tureAssignabilityInInheritance3.errors.txt | 38 +-- .../reference/constructorAsType.errors.txt | 2 + .../contextualTypeWithTuple.errors.txt | 24 +- ...lTypeWithUnionTypeObjectLiteral.errors.txt | 10 +- .../reference/contextualTyping24.errors.txt | 12 +- .../reference/contextualTyping39.errors.txt | 6 +- .../reference/contextualTyping41.errors.txt | 6 +- ...lTypingOfConditionalExpression2.errors.txt | 14 +- ...fGenericFunctionTypedArguments1.errors.txt | 16 +- .../derivedClassTransitivity.errors.txt | 10 +- .../derivedClassTransitivity2.errors.txt | 10 +- .../derivedClassTransitivity3.errors.txt | 10 +- .../derivedClassTransitivity4.errors.txt | 10 +- .../derivedInterfaceCallSignature.errors.txt | 2 + ...tructuringParameterDeclaration2.errors.txt | 32 ++- .../reference/enumAssignability.errors.txt | 6 + .../reference/errorElaboration.errors.txt | 14 +- ...orOnContextuallyTypedReturnType.errors.txt | 6 +- ...AnnotationAndInvalidInitializer.errors.txt | 42 +-- ...endAndImplementTheSameBaseType2.errors.txt | 6 +- ...fixingTypeParametersRepeatedly2.errors.txt | 16 +- tests/baselines/reference/for-of30.errors.txt | 16 +- tests/baselines/reference/for-of31.errors.txt | 24 +- ...functionConstraintSatisfaction2.errors.txt | 24 +- ...tionExpressionContextualTyping2.errors.txt | 6 +- ...ctionSignatureAssignmentCompat1.errors.txt | 10 +- .../reference/generatorTypeCheck25.errors.txt | 46 ++-- .../reference/generatorTypeCheck31.errors.txt | 2 + .../reference/generatorTypeCheck8.errors.txt | 10 +- ...AssignmentCompatWithInterfaces1.errors.txt | 10 +- ...edMethodWithOverloadedArguments.errors.txt | 40 +-- ...lWithConstructorTypedArguments5.errors.txt | 4 + ...lWithGenericSignatureArguments2.errors.txt | 38 +-- ...lWithGenericSignatureArguments3.errors.txt | 10 +- ...oadedConstructorTypedArguments2.errors.txt | 2 + ...erloadedFunctionTypedArguments2.errors.txt | 2 + .../genericCallWithTupleType.errors.txt | 14 +- .../reference/genericCombinators2.errors.txt | 16 +- .../genericSpecializations3.errors.txt | 30 ++- .../genericTypeAssertions2.errors.txt | 10 +- ...cTypeWithNonGenericBaseMisMatch.errors.txt | 40 +-- .../baselines/reference/generics4.errors.txt | 6 +- ...ementGenericWithMismatchedTypes.errors.txt | 16 +- .../reference/incompatibleTypes.errors.txt | 26 +- .../reference/inheritance.errors.txt | 2 + ...eMemberAccessorOverridingMethod.errors.txt | 2 + ...eStaticAccessorOverridingMethod.errors.txt | 2 + ...eStaticPropertyOverridingMethod.errors.txt | 2 + ...nheritedModuleMembersForClodule.errors.txt | 6 +- ...ceMemberAssignsToClassPrototype.errors.txt | 6 +- .../reference/intTypeCheck.errors.txt | 42 ++- .../interfaceAssignmentCompat.errors.txt | 14 +- .../interfaceImplementation1.errors.txt | 2 + .../interfaceImplementation7.errors.txt | 10 +- .../invalidBooleanAssignments.errors.txt | 2 + .../iteratorSpreadInArray9.errors.txt | 24 +- .../reference/lambdaArgCrash.errors.txt | 2 + .../reference/multipleInheritance.errors.txt | 2 + ...MembersOfObjectAssignmentCompat.errors.txt | 18 +- ...embersOfObjectAssignmentCompat2.errors.txt | 30 ++- ...mbersOfFunctionAssignmentCompat.errors.txt | 6 +- ...mbersOfFunctionAssignmentCompat.errors.txt | 6 +- ...ptionalFunctionArgAssignability.errors.txt | 20 +- .../optionalParamAssignmentCompat.errors.txt | 10 +- .../optionalParamTypeComparison.errors.txt | 20 +- .../overloadOnConstInheritance2.errors.txt | 2 + .../overloadOnConstInheritance3.errors.txt | 2 + .../overloadResolutionOverCTLambda.errors.txt | 6 +- ...nWithConstraintCheckingDeferred.errors.txt | 14 +- .../overloadsWithProvisionalErrors.errors.txt | 20 +- .../baselines/reference/parseTypes.errors.txt | 6 + .../reference/parser536727.errors.txt | 12 +- ...serAutomaticSemicolonInsertion1.errors.txt | 4 + .../reference/promiseChaining1.errors.txt | 10 +- .../reference/promiseChaining2.errors.txt | 10 +- .../reference/promisePermutations.errors.txt | 210 +++++++++------ .../reference/promisePermutations2.errors.txt | 210 +++++++++------ .../reference/promisePermutations3.errors.txt | 240 ++++++++++++------ .../reference/propertyAssignment.errors.txt | 6 +- tests/baselines/reference/qualify.errors.txt | 4 + .../recursiveFunctionTypes.errors.txt | 16 +- .../requiredInitializedParameter2.errors.txt | 2 + .../restArgAssignmentCompat.errors.txt | 14 +- ...gnsToConstructorFunctionMembers.errors.txt | 6 +- ...ypesAsTypeParameterConstraint02.errors.txt | 6 +- .../subtypingWithCallSignaturesA.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 4 + ...allSignaturesWithRestParameters.errors.txt | 110 ++++---- ...aturesWithSpecializedSignatures.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 4 + ...aturesWithSpecializedSignatures.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 12 + ...ignaturesWithOptionalParameters.errors.txt | 12 + .../reference/symbolProperty24.errors.txt | 6 +- .../reference/targetTypeVoidFunc.errors.txt | 2 + .../baselines/reference/tupleTypes.errors.txt | 20 +- ...entInferenceConstructSignatures.errors.txt | 30 ++- .../typeArgumentInferenceErrors.errors.txt | 30 ++- ...ntInferenceWithClassExpression2.errors.txt | 10 +- ...rgumentInferenceWithConstraints.errors.txt | 30 ++- .../typeGuardFunctionErrors.errors.txt | 28 +- .../baselines/reference/typeName1.errors.txt | 4 + ...ypeParameterArgumentEquivalence.errors.txt | 20 +- ...peParameterArgumentEquivalence2.errors.txt | 20 +- ...peParameterArgumentEquivalence3.errors.txt | 12 +- ...peParameterArgumentEquivalence4.errors.txt | 12 +- ...peParameterArgumentEquivalence5.errors.txt | 24 +- ...gWithContextSensitiveArguments2.errors.txt | 10 +- ...gWithContextSensitiveArguments3.errors.txt | 10 +- .../typesWithPrivateConstructor.errors.txt | 2 + .../typesWithPublicConstructor.errors.txt | 2 + .../undeclaredModuleError.errors.txt | 6 +- 151 files changed, 1874 insertions(+), 992 deletions(-) diff --git a/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt b/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt index 4b6255688f8..be20b673287 100644 --- a/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt +++ b/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/addMoreOverloadsToBaseSignature.ts(5,11): error TS2430: Interface 'Bar' incorrectly extends interface 'Foo'. Types of property 'f' are incompatible. Type '(key: string) => string' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in '(key: string) => string' ==== tests/cases/compiler/addMoreOverloadsToBaseSignature.ts (1 errors) ==== @@ -13,6 +14,7 @@ tests/cases/compiler/addMoreOverloadsToBaseSignature.ts(5,11): error TS2430: Int !!! error TS2430: Interface 'Bar' incorrectly extends interface 'Foo'. !!! error TS2430: Types of property 'f' are incompatible. !!! error TS2430: Type '(key: string) => string' is not assignable to type '() => string'. +!!! error TS2430: Signature '(): string' has no corresponding signature in '(key: string) => string' f(key: string): string; } \ No newline at end of file diff --git a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt index d60f0b7d03c..a766bab8a96 100644 --- a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt +++ b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt @@ -29,13 +29,15 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(24,5): error tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(25,5): error TS2322: Type '[string, number]' is not assignable to type '[string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => string | number' + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(26,5): error TS2322: Type 'StrNum' is not assignable to type '[string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => string | number' + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(27,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. Property 'length' is missing in type '{ 0: string; 1: number; }'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(28,5): error TS2322: Type '[string, number]' is not assignable to type '[number, string]'. @@ -120,15 +122,17 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(30,5): error !!! error TS2322: Type '[string, number]' is not assignable to type '[string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var m2: [string] = y; ~~ !!! error TS2322: Type 'StrNum' is not assignable to type '[string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var m3: [string] = z; ~~ !!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. diff --git a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt index 72ba1411320..b7ea49c7283 100644 --- a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt +++ b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(8,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | string' + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. Property '0' is missing in type 'number[]'. @@ -20,8 +21,9 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte !!! error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. // In a contextually typed array literal expression containing one or more spread elements, // an element expression at index N is contextually typed by the numeric index type of the contextual type, if any. diff --git a/tests/baselines/reference/arrayLiterals3.errors.txt b/tests/baselines/reference/arrayLiterals3.errors.txt index 637fb3e3bc4..a3d3611cf55 100644 --- a/tests/baselines/reference/arrayLiterals3.errors.txt +++ b/tests/baselines/reference/arrayLiterals3.errors.txt @@ -6,8 +6,9 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(11,5): error tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(17,5): error TS2322: Type '[number, number, string, boolean]' is not assignable to type '[number, number]'. Types of property 'pop' are incompatible. Type '() => number | string | boolean' is not assignable to type '() => number'. - Type 'number | string | boolean' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | string | boolean' + Type 'number | string | boolean' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(32,5): error TS2322: Type '(number[] | string[])[]' is not assignable to type 'tup'. Property '0' is missing in type '(number[] | string[])[]'. tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(33,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. @@ -15,10 +16,11 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(33,5): error tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error TS2322: Type '(number | string)[]' is not assignable to type 'myArray'. Types of property 'push' are incompatible. Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. - Types of parameters 'items' and 'items' are incompatible. - Type 'number | string' is not assignable to type 'Number'. - Type 'string' is not assignable to type 'Number'. - Property 'toFixed' is missing in type 'String'. + Signature '(...items: Number[]): number' has no corresponding signature in '(...items: (number | string)[]) => number' + Types of parameters 'items' and 'items' are incompatible. + Type 'number | string' is not assignable to type 'Number'. + Type 'string' is not assignable to type 'Number'. + Property 'toFixed' is missing in type 'String'. ==== tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts (6 errors) ==== @@ -50,8 +52,9 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error !!! error TS2322: Type '[number, number, string, boolean]' is not assignable to type '[number, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string | boolean' is not assignable to type '() => number'. -!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string | boolean' +!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. // The resulting type an array literal expression is determined as follows: // - the resulting type is an array type with an element type that is the union of the types of the @@ -79,8 +82,9 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error !!! error TS2322: Type '(number | string)[]' is not assignable to type 'myArray'. !!! error TS2322: Types of property 'push' are incompatible. !!! error TS2322: Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. -!!! error TS2322: Types of parameters 'items' and 'items' are incompatible. -!!! error TS2322: Type 'number | string' is not assignable to type 'Number'. -!!! error TS2322: Type 'string' is not assignable to type 'Number'. -!!! error TS2322: Property 'toFixed' is missing in type 'String'. +!!! error TS2322: Signature '(...items: Number[]): number' has no corresponding signature in '(...items: (number | string)[]) => number' +!!! error TS2322: Types of parameters 'items' and 'items' are incompatible. +!!! error TS2322: Type 'number | string' is not assignable to type 'Number'. +!!! error TS2322: Type 'string' is not assignable to type 'Number'. +!!! error TS2322: Property 'toFixed' is missing in type 'String'. \ No newline at end of file diff --git a/tests/baselines/reference/asOperatorContextualType.errors.txt b/tests/baselines/reference/asOperatorContextualType.errors.txt index c53b407b5cf..6c52114625b 100644 --- a/tests/baselines/reference/asOperatorContextualType.errors.txt +++ b/tests/baselines/reference/asOperatorContextualType.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. - Type 'number' is not assignable to type 'string'. + Signature '(x: number): string' has no corresponding signature in '(v: number) => number' + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts (1 errors) ==== @@ -7,4 +8,5 @@ tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): var x = (v => v) as (x: number) => string; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. -!!! error TS2352: Type 'number' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2352: Signature '(x: number): string' has no corresponding signature in '(v: number) => number' +!!! error TS2352: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/assignFromBooleanInterface2.errors.txt b/tests/baselines/reference/assignFromBooleanInterface2.errors.txt index c03eab60c74..f20050a5b9e 100644 --- a/tests/baselines/reference/assignFromBooleanInterface2.errors.txt +++ b/tests/baselines/reference/assignFromBooleanInterface2.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(14,1): error TS2322: Type 'NotBoolean' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => Object' is not assignable to type '() => boolean'. - Type 'Object' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => Object' + Type 'Object' is not assignable to type 'boolean'. tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(19,1): error TS2322: Type 'Boolean' is not assignable to type 'boolean'. tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(20,1): error TS2322: Type 'NotBoolean' is not assignable to type 'boolean'. @@ -25,7 +26,8 @@ tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts( !!! error TS2322: Type 'NotBoolean' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => Object' +!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. b = a; b = x; diff --git a/tests/baselines/reference/assignToFn.errors.txt b/tests/baselines/reference/assignToFn.errors.txt index 7f2c7855a35..2b2b2a5366f 100644 --- a/tests/baselines/reference/assignToFn.errors.txt +++ b/tests/baselines/reference/assignToFn.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. + Signature '(n: number): boolean' has no corresponding signature in 'String' ==== tests/cases/compiler/assignToFn.ts (1 errors) ==== @@ -12,5 +13,6 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assi x.f="hello"; ~~~ !!! error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. +!!! error TS2322: Signature '(n: number): boolean' has no corresponding signature in 'String' } \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt index c7552c3fdb2..16fff660c1d 100644 --- a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt +++ b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatBetweenTupleAndArray.ts(17,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | string' + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatBetweenTupleAndArray.ts(18,1): error TS2322: Type '{}[]' is not assignable to type '[{}]'. Property '0' is missing in type '{}[]'. @@ -29,8 +30,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type '[number, string]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. emptyObjTuple = emptyObjArray; ~~~~~~~~~~~~~ !!! error TS2322: Type '{}[]' is not assignable to type '[{}]'. diff --git a/tests/baselines/reference/assignmentCompatBug5.errors.txt b/tests/baselines/reference/assignmentCompatBug5.errors.txt index 1b5e3d80259..f8b1a1094e2 100644 --- a/tests/baselines/reference/assignmentCompatBug5.errors.txt +++ b/tests/baselines/reference/assignmentCompatBug5.errors.txt @@ -3,10 +3,12 @@ tests/cases/compiler/assignmentCompatBug5.ts(2,8): error TS2345: Argument of typ tests/cases/compiler/assignmentCompatBug5.ts(5,6): error TS2345: Argument of type 'string[]' is not assignable to parameter of type 'number[]'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatBug5.ts(8,6): error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. - Types of parameters 's' and 'n' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(n: number): number' has no corresponding signature in '(s: string) => void' + Types of parameters 's' and 'n' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. - Type 'void' is not assignable to type 'number'. + Signature '(n: number): number' has no corresponding signature in '(n: number) => void' + Type 'void' is not assignable to type 'number'. ==== tests/cases/compiler/assignmentCompatBug5.ts (4 errors) ==== @@ -26,11 +28,13 @@ tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of typ foo3((s:string) => { }); ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. -!!! error TS2345: Types of parameters 's' and 'n' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(n: number): number' has no corresponding signature in '(s: string) => void' +!!! error TS2345: Types of parameters 's' and 'n' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. foo3((n) => { return; }); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. -!!! error TS2345: Type 'void' is not assignable to type 'number'. +!!! error TS2345: Signature '(n: number): number' has no corresponding signature in '(n: number) => void' +!!! error TS2345: Type 'void' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt index 6a221ef144e..194b1834a61 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt @@ -1,27 +1,35 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(35,1): error TS2322: Type 'S2' is not assignable to type 'T'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in 'S2' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(36,1): error TS2322: Type '(x: string) => void' is not assignable to type 'T'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(37,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(38,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(39,1): error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in 'S2' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(40,1): error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(41,1): error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(42,1): error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts (8 errors) ==== @@ -62,41 +70,49 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme t = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'T'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in 'S2' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'T'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => number' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'T'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in 'S2' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => number' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt index e67f0a930c2..fdcc9fe6ec9 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt @@ -9,13 +9,15 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(42,1): error TS2322: Type 'S2' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(43,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(44,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(45,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. @@ -23,13 +25,15 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(46,1): error TS2322: Type 'S2' is not assignable to type '{ f(x: number): void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(47,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(48,1): error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(49,1): error TS2322: Type '(x: string) => string' is not assignable to type '{ f(x: number): void; }'. @@ -95,15 +99,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. @@ -117,15 +123,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type '{ f(x: number): void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt index e00d1eea042..3620fb0e8c3 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt @@ -1,13 +1,16 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(52,9): error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(53,9): error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Signature '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts (2 errors) ==== @@ -65,17 +68,20 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a8 = b8; // error, { foo: number } and Base are incompatible ~~ !!! error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' +!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2322: Types of property 'foo' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. b8 = a8; // error, { foo: number } and Base are incompatible ~~ !!! error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Signature '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. var b10: (...x: T[]) => T; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt index f89bbfa5798..504f6d70799 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt @@ -1,10 +1,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(x: number, y?: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(22,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. + Signature '(x?: number): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(39,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. + Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(45,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. + Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts (7 errors) ==== @@ -26,18 +33,22 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = (x: number) => 1; // error, too many required params ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number) => number' a = b.a; // ok a = b.a2; // ok a = b.a3; // error ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number) => number' a = b.a4; // error ~ !!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number, y?: number) => number' a = b.a5; // ok a = b.a6; // error ~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number, y: number) => number' var a2: (x?: number) => number; a2 = () => 1; // ok, same number of required params @@ -51,6 +62,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = b.a6; // error ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. +!!! error TS2322: Signature '(x?: number): number' has no corresponding signature in '(x: number, y: number) => number' var a3: (x: number) => number; a3 = () => 1; // ok, fewer required params @@ -59,6 +71,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = (x: number, y: number) => 1; // error, too many required params ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. +!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' a3 = b.a; // ok a3 = b.a2; // ok a3 = b.a3; // ok @@ -67,6 +80,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = b.a6; // error ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. +!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' var a4: (x: number, y?: number) => number; a4 = () => 1; // ok, fewer required params diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt index 8eec8503e70..e785ab663ca 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt @@ -1,30 +1,39 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(13,5): error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' + Types of parameters 'args' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' + Types of parameters 'x' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(26,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' + Types of parameters 'z' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts (9 errors) ==== @@ -43,16 +52,18 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = (...args: string[]) => 1; // error, type mismatch ~ !!! error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2322: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' +!!! error TS2322: Types of parameters 'args' and 'args' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x?: number) => 1; // ok, same number of required params a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params a = (x: number) => 1; // ok, rest param corresponds to infinite number of params a = (x?: string) => 1; // error, incompatible type ~ !!! error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2322: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' +!!! error TS2322: Types of parameters 'x' and 'args' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a2: (x: number, ...z: number[]) => number; @@ -64,8 +75,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = (x: number, ...args: string[]) => 1; // should be type mismatch error ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' +!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a2 = (x: number, y: number) => 1; // ok, rest param corresponds to infinite number of params a2 = (x: number, y?: number) => 1; // ok, same number of required params @@ -77,35 +89,41 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = (x: number, y?: number, z?: number) => 1; // error ~~ !!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a3 = (x: number, ...z: number[]) => 1; // error ~~ !!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' +!!! error TS2322: Types of parameters 'z' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a3 = (x: string, y?: string, z?: string) => 1; // error ~~ !!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = () => 1; // ok, fewer required params a4 = (x?: number, y?: number) => 1; // error, type mismatch ~~ !!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a4 = (x: number) => 1; // ok, all present params match a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ~~ !!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' +!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt index 9c0c0d6a8fd..dfefb83af2f 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt @@ -1,11 +1,19 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(28,1): error TS2322: Type 'S2' is not assignable to type 'T'. + Signature 'new (x: number): void' has no corresponding signature in 'S2' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(29,1): error TS2322: Type '(x: string) => void' is not assignable to type 'T'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(30,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(31,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(32,1): error TS2322: Type 'S2' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in 'S2' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(33,1): error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(34,1): error TS2322: Type '(x: string) => number' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(35,1): error TS2322: Type '(x: string) => string' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts (8 errors) ==== @@ -39,25 +47,33 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme t = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'T'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'S2' t = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'T'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' t = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'T'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' a = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'S2' a = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' a = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt index 5e8fc6dd3a4..ab181157b6e 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt @@ -9,9 +9,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(34,1): error TS2322: Type 'S2' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(35,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(36,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(37,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. @@ -19,9 +21,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(38,1): error TS2322: Type 'S2' is not assignable to type '{ f: new (x: number) => void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(39,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f: new (x: number) => void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(40,1): error TS2322: Type '(x: string) => number' is not assignable to type '{ f: new (x: number) => void; }'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(41,1): error TS2322: Type '(x: string) => string' is not assignable to type '{ f: new (x: number) => void; }'. @@ -79,11 +83,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' t = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. @@ -97,11 +103,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type '{ f: new (x: number) => void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' a = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f: new (x: number) => void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '{ f: new (x: number) => void; }'. diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt index 804e31600e1..3a771411b53 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt @@ -1,25 +1,34 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(52,9): error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(53,9): error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Signature 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. - Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + Signature 'new (x: { new (a: number): number; new (a?: number): number; }): number[]' has no corresponding signature in 'new (x: (a: T) => T) => T[]' + Types of parameters 'x' and 'x' are incompatible. + Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. - Types of parameters 'x' and 'x' are incompatible. - Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. + Signature 'new (x: (a: T) => T): T[]' has no corresponding signature in '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' + Types of parameters 'x' and 'x' are incompatible. + Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. - Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. + Signature 'new (x: { new (a: T): T; new (a: T): T; }): any[]' has no corresponding signature in 'new (x: (a: T) => T) => any[]' + Types of parameters 'x' and 'x' are incompatible. + Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. + Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(82,9): error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. - Types of parameters 'x' and 'x' are incompatible. - Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. + Signature 'new (x: (a: T) => T): any[]' has no corresponding signature in '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' + Types of parameters 'x' and 'x' are incompatible. + Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts (6 errors) ==== @@ -77,17 +86,20 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a8 = b8; // error, type mismatch ~~ !!! error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' +!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2322: Types of property 'foo' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. b8 = a8; // error ~~ !!! error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Signature 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. var b10: new (...x: T[]) => T; @@ -114,25 +126,31 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a16 = b16; // error ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. +!!! error TS2322: Signature 'new (x: { new (a: number): number; new (a?: number): number; }): number[]' has no corresponding signature in 'new (x: (a: T) => T) => T[]' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. +!!! error TS2322: Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' b16 = a16; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Signature 'new (x: (a: T) => T): T[]' has no corresponding signature in '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. var b17: new (x: (a: T) => T) => any[]; a17 = b17; // error ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. +!!! error TS2322: Signature 'new (x: { new (a: T): T; new (a: T): T; }): any[]' has no corresponding signature in 'new (x: (a: T) => T) => any[]' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. +!!! error TS2322: Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' b17 = a17; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Signature 'new (x: (a: T) => T): any[]' has no corresponding signature in '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. } module WithGenericSignaturesInBaseType { diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt index df56af3ee98..4ba4ec9a3c3 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt @@ -1,8 +1,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in 'new (x: number, y?: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in 'new (x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. + Signature 'new (x?: number): number' has no corresponding signature in 'new (x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(35,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. + Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts (5 errors) ==== @@ -24,13 +29,16 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = b.a3; // error ~ !!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. +!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' a = b.a4; // error ~ !!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. +!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number, y?: number) => number' a = b.a5; // ok a = b.a6; // error ~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. +!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number, y: number) => number' var a2: new (x?: number) => number; a2 = b.a; // ok @@ -41,6 +49,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = b.a6; // error ~~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. +!!! error TS2322: Signature 'new (x?: number): number' has no corresponding signature in 'new (x: number, y: number) => number' var a3: new (x: number) => number; a3 = b.a; // ok @@ -51,6 +60,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = b.a6; // error ~~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. +!!! error TS2322: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' var a4: new (x: number, y?: number) => number; a4 = b.a; // ok diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt index a18da8fd8f7..229ec114d39 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt @@ -1,9 +1,15 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(14,13): error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(23,13): error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(65,9): error TS2322: Type '(x: T) => T' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(66,9): error TS2322: Type '(x: T, y?: T) => T' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T, y?: T) => T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(107,13): error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(116,13): error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -23,6 +29,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a = (x: T) => null; // error, too many required params ~~~~~~ !!! error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. +!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => any' this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params @@ -34,6 +41,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a3 = (x: T, y: T) => null; // error, too many required params ~~~~~~~ !!! error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. +!!! error TS2322: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params @@ -78,9 +86,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme b.a = t.a3; ~~~ !!! error TS2322: Type '(x: T) => T' is not assignable to type '() => T'. +!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => T' b.a = t.a4; ~~~ !!! error TS2322: Type '(x: T, y?: T) => T' is not assignable to type '() => T'. +!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T, y?: T) => T' b.a = t.a5; b.a2 = t.a; @@ -124,6 +134,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a = (x: T) => null; // error, too many required params ~~~~~~ !!! error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. +!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => any' this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params @@ -135,6 +146,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a3 = (x: T, y: T) => null; // error, too many required params ~~~~~~~ !!! error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. +!!! error TS2322: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params diff --git a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt index 3bea0c46716..1def25bf372 100644 --- a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt @@ -1,13 +1,17 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(17,1): error TS2322: Type '(x: string) => string' is not assignable to type '(s1: string) => number'. - Type 'string' is not assignable to type 'number'. -tests/cases/compiler/assignmentCompatWithOverloads.ts(19,1): error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. - Types of parameters 'x' and 's1' are incompatible. - Type 'number' is not assignable to type 'string'. -tests/cases/compiler/assignmentCompatWithOverloads.ts(21,1): error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. - Type 'string' is not assignable to type 'number'. -tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. + Signature '(s1: string): number' has no corresponding signature in '(x: string) => string' Type 'string' is not assignable to type 'number'. +tests/cases/compiler/assignmentCompatWithOverloads.ts(19,1): error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. + Signature '(s1: string): number' has no corresponding signature in '(x: number) => number' + Types of parameters 'x' and 's1' are incompatible. + Type 'number' is not assignable to type 'string'. +tests/cases/compiler/assignmentCompatWithOverloads.ts(21,1): error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. + Signature '(s1: string): number' has no corresponding signature in '{ (x: string): string; (x: number): number; }' + Type 'string' is not assignable to type 'number'. +tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. + Signature 'new (x: number): void' has no corresponding signature in 'typeof C' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/assignmentCompatWithOverloads.ts (4 errors) ==== @@ -30,18 +34,21 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type g = f2; // Error ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Type 'string' is not assignable to type 'number'. g = f3; // Error ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Types of parameters 'x' and 's1' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '(x: number) => number' +!!! error TS2322: Types of parameters 'x' and 's1' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. g = f4; // Error ~ !!! error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '{ (x: string): string; (x: number): number; }' +!!! error TS2322: Type 'string' is not assignable to type 'number'. class C { constructor(x: string); @@ -53,5 +60,6 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type d = C; // Error ~ !!! error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'typeof C' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability24.errors.txt b/tests/baselines/reference/assignmentCompatability24.errors.txt index 0f4a535d413..69c0bd2b288 100644 --- a/tests/baselines/reference/assignmentCompatability24.errors.txt +++ b/tests/baselines/reference/assignmentCompatability24.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignmentCompatability24.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. + Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' ==== tests/cases/compiler/assignmentCompatability24.ts (1 errors) ==== @@ -12,4 +13,5 @@ tests/cases/compiler/assignmentCompatability24.ts(9,1): error TS2322: Type 'inte } __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. +!!! error TS2322: Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability33.errors.txt b/tests/baselines/reference/assignmentCompatability33.errors.txt index e2352625280..50e173b1202 100644 --- a/tests/baselines/reference/assignmentCompatability33.errors.txt +++ b/tests/baselines/reference/assignmentCompatability33.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignmentCompatability33.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. + Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' ==== tests/cases/compiler/assignmentCompatability33.ts (1 errors) ==== @@ -12,4 +13,5 @@ tests/cases/compiler/assignmentCompatability33.ts(9,1): error TS2322: Type 'inte } __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. +!!! error TS2322: Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability34.errors.txt b/tests/baselines/reference/assignmentCompatability34.errors.txt index 2dd9cba6470..2f0bca9dff2 100644 --- a/tests/baselines/reference/assignmentCompatability34.errors.txt +++ b/tests/baselines/reference/assignmentCompatability34.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignmentCompatability34.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tnumber) => Tnumber'. + Signature '(a: Tnumber): Tnumber' has no corresponding signature in 'interfaceWithPublicAndOptional' ==== tests/cases/compiler/assignmentCompatability34.ts (1 errors) ==== @@ -12,4 +13,5 @@ tests/cases/compiler/assignmentCompatability34.ts(9,1): error TS2322: Type 'inte } __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tnumber) => Tnumber'. \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tnumber) => Tnumber'. +!!! error TS2322: Signature '(a: Tnumber): Tnumber' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability37.errors.txt b/tests/baselines/reference/assignmentCompatability37.errors.txt index 452b72fe8ff..f965d49a0da 100644 --- a/tests/baselines/reference/assignmentCompatability37.errors.txt +++ b/tests/baselines/reference/assignmentCompatability37.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignmentCompatability37.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tnumber) => any'. + Signature 'new (param: Tnumber): any' has no corresponding signature in 'interfaceWithPublicAndOptional' ==== tests/cases/compiler/assignmentCompatability37.ts (1 errors) ==== @@ -12,4 +13,5 @@ tests/cases/compiler/assignmentCompatability37.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tnumber) => any'. \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tnumber) => any'. +!!! error TS2322: Signature 'new (param: Tnumber): any' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability38.errors.txt b/tests/baselines/reference/assignmentCompatability38.errors.txt index 5f7918374c1..1a5540065cc 100644 --- a/tests/baselines/reference/assignmentCompatability38.errors.txt +++ b/tests/baselines/reference/assignmentCompatability38.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/assignmentCompatability38.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tstring) => any'. + Signature 'new (param: Tstring): any' has no corresponding signature in 'interfaceWithPublicAndOptional' ==== tests/cases/compiler/assignmentCompatability38.ts (1 errors) ==== @@ -12,4 +13,5 @@ tests/cases/compiler/assignmentCompatability38.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tstring) => any'. \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tstring) => any'. +!!! error TS2322: Signature 'new (param: Tstring): any' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObject.errors.txt b/tests/baselines/reference/assignmentToObject.errors.txt index aa1222bd799..796f8430b84 100644 --- a/tests/baselines/reference/assignmentToObject.errors.txt +++ b/tests/baselines/reference/assignmentToObject.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'Number' ==== tests/cases/compiler/assignmentToObject.ts (1 errors) ==== @@ -11,4 +12,5 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt index 2e85ee101f5..881b29bf443 100644 --- a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt +++ b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt @@ -1,11 +1,13 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(1,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'Number' tests/cases/compiler/assignmentToObjectAndFunction.ts(8,5): error TS2322: Type '{}' is not assignable to type 'Function'. Property 'apply' is missing in type '{}'. tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type 'typeof bad' is not assignable to type 'Function'. Types of property 'apply' are incompatible. Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. + Signature '(thisArg: any, argArray?: any): any' has no corresponding signature in 'Number' ==== tests/cases/compiler/assignmentToObjectAndFunction.ts (3 errors) ==== @@ -14,6 +16,7 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' var goodObj: Object = { toString(x?) { return ""; @@ -48,4 +51,5 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type ~~~~~~~~~~ !!! error TS2322: Type 'typeof bad' is not assignable to type 'Function'. !!! error TS2322: Types of property 'apply' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. \ No newline at end of file +!!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. +!!! error TS2322: Signature '(thisArg: any, argArray?: any): any' has no corresponding signature in 'Number' \ No newline at end of file diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt index bc1ef24127a..8aa24d79ac0 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt @@ -3,10 +3,12 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(8,16): error TS1055: Type 'number' is not a valid async function return type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(9,16): error TS1055: Type 'PromiseLike' is not a valid async function return type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(10,16): error TS1055: Type 'typeof Thenable' is not a valid async function return type. - Type 'Thenable' is not assignable to type 'PromiseLike'. - Types of property 'then' are incompatible. - Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. - Type 'void' is not assignable to type 'PromiseLike'. + Signature 'new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): PromiseLike' has no corresponding signature in 'typeof Thenable' + Type 'Thenable' is not assignable to type 'PromiseLike'. + Types of property 'then' are incompatible. + Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. + Signature '(onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'PromiseLike'. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(17,16): error TS1059: Return expression in async function does not have a valid callable 'then' member. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(23,25): error TS1058: Operand for 'await' does not have a valid callable 'then' member. @@ -32,10 +34,12 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 async function fn6(): Thenable { } // error ~~~ !!! error TS1055: Type 'typeof Thenable' is not a valid async function return type. -!!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike'. -!!! error TS1055: Types of property 'then' are incompatible. -!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. -!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. +!!! error TS1055: Signature 'new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): PromiseLike' has no corresponding signature in 'typeof Thenable' +!!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike'. +!!! error TS1055: Types of property 'then' are incompatible. +!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. +!!! error TS1055: Signature '(onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike' has no corresponding signature in '() => void' +!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. async function fn7() { return; } // valid: Promise async function fn8() { return 1; } // valid: Promise async function fn9() { return null; } // valid: Promise diff --git a/tests/baselines/reference/booleanAssignment.errors.txt b/tests/baselines/reference/booleanAssignment.errors.txt index 454bd7ef707..b16cca5c1bb 100644 --- a/tests/baselines/reference/booleanAssignment.errors.txt +++ b/tests/baselines/reference/booleanAssignment.errors.txt @@ -1,15 +1,18 @@ tests/cases/compiler/booleanAssignment.ts(2,1): error TS2322: Type 'number' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => number' is not assignable to type '() => boolean'. - Type 'number' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => number' + Type 'number' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(3,1): error TS2322: Type 'string' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => string' is not assignable to type '() => boolean'. - Type 'string' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => Object' is not assignable to type '() => boolean'. - Type 'Object' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => Object' + Type 'Object' is not assignable to type 'boolean'. ==== tests/cases/compiler/booleanAssignment.ts (3 errors) ==== @@ -19,19 +22,22 @@ tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not a !!! error TS2322: Type 'number' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => number' +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. b = "a"; // Error ~ !!! error TS2322: Type 'string' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'string' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => string' +!!! error TS2322: Type 'string' is not assignable to type 'boolean'. b = {}; // Error ~ !!! error TS2322: Type '{}' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => Object' +!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. var o = {}; o = b; // OK diff --git a/tests/baselines/reference/callConstructAssignment.errors.txt b/tests/baselines/reference/callConstructAssignment.errors.txt index 42949cf585d..e52d8b1f063 100644 --- a/tests/baselines/reference/callConstructAssignment.errors.txt +++ b/tests/baselines/reference/callConstructAssignment.errors.txt @@ -1,5 +1,7 @@ tests/cases/compiler/callConstructAssignment.ts(7,1): error TS2322: Type 'new () => any' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in 'new () => any' tests/cases/compiler/callConstructAssignment.ts(8,1): error TS2322: Type '() => void' is not assignable to type 'new () => any'. + Signature 'new (): any' has no corresponding signature in '() => void' ==== tests/cases/compiler/callConstructAssignment.ts (2 errors) ==== @@ -12,6 +14,8 @@ tests/cases/compiler/callConstructAssignment.ts(8,1): error TS2322: Type '() => foo = bar; // error ~~~ !!! error TS2322: Type 'new () => any' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'new () => any' bar = foo; // error ~~~ -!!! error TS2322: Type '() => void' is not assignable to type 'new () => any'. \ No newline at end of file +!!! error TS2322: Type '() => void' is not assignable to type 'new () => any'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' \ No newline at end of file diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt b/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt index d6efdd66868..3e66787b54d 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance.ts(57,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: number) => string' is not assignable to type '(x: number) => number'. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '(x: number) => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance.ts (1 errors) ==== @@ -66,7 +67,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: number) => string' is not assignable to type '(x: number) => number'. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: number): number' has no corresponding signature in '(x: number) => string' +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: (x: number) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt index 7e9d75b1b41..b3bdb17ea71 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt @@ -1,17 +1,20 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts(51,19): error TS2430: Interface 'I2' incorrectly extends interface 'A'. Types of property 'a2' are incompatible. Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. - Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Signature '(x: number): string[]' has no corresponding signature in '(x: T) => U[]' + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts(60,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts (2 errors) ==== @@ -70,8 +73,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I2' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: number): string[]' has no corresponding signature in '(x: T) => U[]' +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'T' is not assignable to type 'number'. a2: (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -85,12 +89,14 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I4' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2430: Types of property 'foo' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' +!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2430: Types of property 'foo' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a8: (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; // error, type mismatch } diff --git a/tests/baselines/reference/castingTuple.errors.txt b/tests/baselines/reference/castingTuple.errors.txt index 62a36c9c156..cdf40eeeff6 100644 --- a/tests/baselines/reference/castingTuple.errors.txt +++ b/tests/baselines/reference/castingTuple.errors.txt @@ -13,8 +13,9 @@ tests/cases/conformance/types/tuple/castingTuple.ts(30,5): error TS2403: Subsequ tests/cases/conformance/types/tuple/castingTuple.ts(30,14): error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | string' + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot find name 't4'. @@ -70,8 +71,9 @@ tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot !!! error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. !!! error TS2352: Types of property 'pop' are incompatible. !!! error TS2352: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2352: Type 'number | string' is not assignable to type 'number'. -!!! error TS2352: Type 'string' is not assignable to type 'number'. +!!! error TS2352: Signature '(): number' has no corresponding signature in '() => number | string' +!!! error TS2352: Type 'number | string' is not assignable to type 'number'. +!!! error TS2352: Type 'string' is not assignable to type 'number'. t4[2] = 10; ~~ !!! error TS2304: Cannot find name 't4'. diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt index 181bfcc907d..579f6c47138 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts(19,59): error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. - Type 'B' is not assignable to type 'C'. - Property 'z' is missing in type 'B'. + Signature '(x: C): C' has no corresponding signature in '(c: C) => B' + Type 'B' is not assignable to type 'C'. + Property 'z' is missing in type 'B'. ==== tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts (1 errors) ==== @@ -25,5 +26,6 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParamete (new Chain(new A)).then(a => new B).then(b => new C).then(c => new B).then(b => new A); ~~~~~~~~~~ !!! error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. -!!! error TS2345: Type 'B' is not assignable to type 'C'. -!!! error TS2345: Property 'z' is missing in type 'B'. \ No newline at end of file +!!! error TS2345: Signature '(x: C): C' has no corresponding signature in '(c: C) => B' +!!! error TS2345: Type 'B' is not assignable to type 'C'. +!!! error TS2345: Property 'z' is missing in type 'B'. \ No newline at end of file diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt index 8f5924586df..1de7ead6e04 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt @@ -1,7 +1,9 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(7,43): error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. - Type 'T' is not assignable to type 'S'. + Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' + Type 'T' is not assignable to type 'S'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(10,29): error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. - Type 'T' is not assignable to type 'S'. + Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' + Type 'T' is not assignable to type 'S'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(32,9): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(36,9): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(37,9): error TS2322: Type 'string' is not assignable to type 'number'. @@ -17,13 +19,15 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParamete (new Chain(t)).then(tt => s).then(ss => t); ~~~~~~~ !!! error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. -!!! error TS2345: Type 'T' is not assignable to type 'S'. +!!! error TS2345: Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' +!!! error TS2345: Type 'T' is not assignable to type 'S'. // But error to try to climb up the chain (new Chain(s)).then(ss => t); ~~~~~~~ !!! error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. -!!! error TS2345: Type 'T' is not assignable to type 'S'. +!!! error TS2345: Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' +!!! error TS2345: Type 'T' is not assignable to type 'S'. // Staying at T or S should be fine (new Chain(t)).then(tt => t).then(tt => t).then(tt => t); diff --git a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt index c6c242396d8..5cb9a2e7f08 100644 --- a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt +++ b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt @@ -1,6 +1,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(7,1): error TS2322: Type 'typeof A' is not assignable to type 'new () => A'. Cannot assign an abstract constructor type to a non-abstract constructor type. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(8,1): error TS2322: Type 'string' is not assignable to type 'new () => A'. + Signature 'new (): A' has no corresponding signature in 'String' ==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts (2 errors) ==== @@ -16,4 +17,5 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst !!! error TS2322: Cannot assign an abstract constructor type to a non-abstract constructor type. AAA = "asdf"; ~~~ -!!! error TS2322: Type 'string' is not assignable to type 'new () => A'. \ No newline at end of file +!!! error TS2322: Type 'string' is not assignable to type 'new () => A'. +!!! error TS2322: Signature 'new (): A' has no corresponding signature in 'String' \ No newline at end of file diff --git a/tests/baselines/reference/classSideInheritance3.errors.txt b/tests/baselines/reference/classSideInheritance3.errors.txt index c845defa5b8..4d6a5a9b018 100644 --- a/tests/baselines/reference/classSideInheritance3.errors.txt +++ b/tests/baselines/reference/classSideInheritance3.errors.txt @@ -1,5 +1,7 @@ tests/cases/compiler/classSideInheritance3.ts(16,5): error TS2322: Type 'typeof B' is not assignable to type 'typeof A'. + Signature 'new (x: string): A' has no corresponding signature in 'typeof B' tests/cases/compiler/classSideInheritance3.ts(17,5): error TS2322: Type 'typeof B' is not assignable to type 'new (x: string) => A'. + Signature 'new (x: string): A' has no corresponding signature in 'typeof B' ==== tests/cases/compiler/classSideInheritance3.ts (2 errors) ==== @@ -21,7 +23,9 @@ tests/cases/compiler/classSideInheritance3.ts(17,5): error TS2322: Type 'typeof var r1: typeof A = B; // error ~~ !!! error TS2322: Type 'typeof B' is not assignable to type 'typeof A'. +!!! error TS2322: Signature 'new (x: string): A' has no corresponding signature in 'typeof B' var r2: new (x: string) => A = B; // error ~~ !!! error TS2322: Type 'typeof B' is not assignable to type 'new (x: string) => A'. +!!! error TS2322: Signature 'new (x: string): A' has no corresponding signature in 'typeof B' var r3: typeof A = C; // ok \ No newline at end of file diff --git a/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt b/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt index 2fa13333058..867a044420d 100644 --- a/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt +++ b/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt @@ -6,13 +6,16 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou Property 'propertyB' is missing in type 'A'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(19,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'. Type '(n: X) => string' is not assignable to type '(t: X) => number'. - Type 'string' is not assignable to type 'number'. + Signature '(t: X): number' has no corresponding signature in '(n: X) => string' + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(20,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'. Type '(m: X) => number' is not assignable to type '(t: X) => string'. - Type 'number' is not assignable to type 'string'. + Signature '(t: X): string' has no corresponding signature in '(m: X) => number' + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(21,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'. Type '(m: X) => number' is not assignable to type '(t: X) => boolean'. - Type 'number' is not assignable to type 'boolean'. + Signature '(t: X): boolean' has no corresponding signature in '(m: X) => number' + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts (5 errors) ==== @@ -46,16 +49,19 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'. !!! error TS2322: Type '(n: X) => string' is not assignable to type '(t: X) => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(t: X): number' has no corresponding signature in '(n: X) => string' +!!! error TS2322: Type 'string' is not assignable to type 'number'. var result5: (t: X) => string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'. !!! error TS2322: Type '(m: X) => number' is not assignable to type '(t: X) => string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(t: X): string' has no corresponding signature in '(m: X) => number' +!!! error TS2322: Type 'number' is not assignable to type 'string'. var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2; ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'. !!! error TS2322: Type '(m: X) => number' is not assignable to type '(t: X) => boolean'. -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(t: X): boolean' has no corresponding signature in '(m: X) => number' +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; \ No newline at end of file diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt b/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt index 51278fc3f44..178239b729e 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance.ts(61,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: number) => string' is not assignable to type 'new (x: number) => number'. - Type 'string' is not assignable to type 'number'. + Signature 'new (x: number): number' has no corresponding signature in 'new (x: number) => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance.ts (1 errors) ==== @@ -70,7 +71,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: number) => string' is not assignable to type 'new (x: number) => number'. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number) => string' +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: new (x: number) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt index 8d6273804f7..5125fc27301 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt @@ -1,17 +1,20 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts(41,19): error TS2430: Interface 'I2' incorrectly extends interface 'A'. Types of property 'a2' are incompatible. Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. - Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Signature 'new (x: number): string[]' has no corresponding signature in 'new (x: T) => U[]' + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts(50,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts (2 errors) ==== @@ -60,8 +63,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I2' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Signature 'new (x: number): string[]' has no corresponding signature in 'new (x: T) => U[]' +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'T' is not assignable to type 'number'. a2: new (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -75,12 +79,14 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I4' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2430: Types of property 'foo' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' +!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2430: Types of property 'foo' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a8: new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; // error, type mismatch } diff --git a/tests/baselines/reference/constructorAsType.errors.txt b/tests/baselines/reference/constructorAsType.errors.txt index b0d30295cde..3bf3dc688ed 100644 --- a/tests/baselines/reference/constructorAsType.errors.txt +++ b/tests/baselines/reference/constructorAsType.errors.txt @@ -1,10 +1,12 @@ tests/cases/compiler/constructorAsType.ts(1,5): error TS2322: Type '() => { name: string; }' is not assignable to type 'new () => { name: string; }'. + Signature 'new (): { name: string; }' has no corresponding signature in '() => { name: string; }' ==== tests/cases/compiler/constructorAsType.ts (1 errors) ==== var Person:new () => {name: string;} = function () {return {name:"joe"};}; ~~~~~~ !!! error TS2322: Type '() => { name: string; }' is not assignable to type 'new () => { name: string; }'. +!!! error TS2322: Signature 'new (): { name: string; }' has no corresponding signature in '() => { name: string; }' var Person2:{new() : {name:string;};}; diff --git a/tests/baselines/reference/contextualTypeWithTuple.errors.txt b/tests/baselines/reference/contextualTypeWithTuple.errors.txt index e447ed62b39..249e96c8829 100644 --- a/tests/baselines/reference/contextualTypeWithTuple.errors.txt +++ b/tests/baselines/reference/contextualTypeWithTuple.errors.txt @@ -1,9 +1,10 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(3,5): error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. Types of property 'pop' are incompatible. Type '() => number | string | boolean' is not assignable to type '() => number | string'. - Type 'number | string | boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'string'. + Signature '(): number | string' has no corresponding signature in '() => number | string | boolean' + Type 'number | string | boolean' is not assignable to type 'number | string'. + Type 'boolean' is not assignable to type 'number | string'. + Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(15,1): error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(18,1): error TS2322: Type '[{}, number]' is not assignable to type '[{ a: string; }, number]'. Types of property '0' are incompatible. @@ -14,8 +15,9 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(19,1): error TS23 tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(20,5): error TS2322: Type '[string, string, number]' is not assignable to type '[string, string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => string | number' + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(24,1): error TS2322: Type '[C, string | number]' is not assignable to type '[C, string | number, D]'. Property '2' is missing in type '[C, string | number]'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS2322: Type '[number, string | number]' is not assignable to type '[number, string]'. @@ -32,9 +34,10 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS23 !!! error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string | boolean' is not assignable to type '() => number | string'. -!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number | string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'number | string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. +!!! error TS2322: Signature '(): number | string' has no corresponding signature in '() => number | string | boolean' +!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number | string'. +!!! error TS2322: Type 'boolean' is not assignable to type 'number | string'. +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. var numStrBoolTuple: [number, string, boolean] = [5, "foo", true]; var objNumTuple: [{ a: string }, number] = [{ a: "world" }, 5]; var strTupleTuple: [string, [number, {}]] = ["bar", [5, { x: 1, y: 1 }]]; @@ -66,8 +69,9 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS23 !!! error TS2322: Type '[string, string, number]' is not assignable to type '[string, string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. unionTuple = unionTuple1; unionTuple = unionTuple2; diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt b/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt index 8be323f9af4..1e0865de8db 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt +++ b/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt @@ -27,8 +27,9 @@ tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts( Type '{ commonMethodDifferentReturnType: (a: string, b: number) => string | number; }' is not assignable to type 'I21'. Types of property 'commonMethodDifferentReturnType' are incompatible. Type '(a: string, b: number) => string | number' is not assignable to type '(a: string, b: number) => number'. - Type 'string | number' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(a: string, b: number): number' has no corresponding signature in '(a: string, b: number) => string | number' + Type 'string | number' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts (6 errors) ==== @@ -124,7 +125,8 @@ tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts( !!! error TS2322: Type '{ commonMethodDifferentReturnType: (a: string, b: number) => string | number; }' is not assignable to type 'I21'. !!! error TS2322: Types of property 'commonMethodDifferentReturnType' are incompatible. !!! error TS2322: Type '(a: string, b: number) => string | number' is not assignable to type '(a: string, b: number) => number'. -!!! error TS2322: Type 'string | number' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(a: string, b: number): number' has no corresponding signature in '(a: string, b: number) => string | number' +!!! error TS2322: Type 'string | number' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. commonMethodDifferentReturnType: (a, b) => strOrNumber, }; \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping24.errors.txt b/tests/baselines/reference/contextualTyping24.errors.txt index a172600e1c5..1d1fd191944 100644 --- a/tests/baselines/reference/contextualTyping24.errors.txt +++ b/tests/baselines/reference/contextualTyping24.errors.txt @@ -1,11 +1,15 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. - Types of parameters 'a' and 'a' are incompatible. - Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. + Signature '(a: { (): number; (i: number): number; }): number' has no corresponding signature in '(a: string) => number' + Types of parameters 'a' and 'a' are incompatible. + Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. + Signature '(): number' has no corresponding signature in 'String' ==== tests/cases/compiler/contextualTyping24.ts (1 errors) ==== var foo:(a:{():number; (i:number):number; })=>number; foo = function(a:string){return 5}; ~~~ !!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. -!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. \ No newline at end of file +!!! error TS2322: Signature '(a: { (): number; (i: number): number; }): number' has no corresponding signature in '(a: string) => number' +!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. +!!! error TS2322: Signature '(): number' has no corresponding signature in 'String' \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping39.errors.txt b/tests/baselines/reference/contextualTyping39.errors.txt index e43624fbead..3cf5e5aa9ff 100644 --- a/tests/baselines/reference/contextualTyping39.errors.txt +++ b/tests/baselines/reference/contextualTyping39.errors.txt @@ -1,9 +1,11 @@ tests/cases/compiler/contextualTyping39.ts(1,11): error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/contextualTyping39.ts (1 errors) ==== var foo = <{ (): number; }> function() { return "err"; }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping41.errors.txt b/tests/baselines/reference/contextualTyping41.errors.txt index 1ed6da1b782..a3e33f26ddd 100644 --- a/tests/baselines/reference/contextualTyping41.errors.txt +++ b/tests/baselines/reference/contextualTyping41.errors.txt @@ -1,9 +1,11 @@ tests/cases/compiler/contextualTyping41.ts(1,11): error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/contextualTyping41.ts (1 errors) ==== var foo = <{():number; (i:number):number; }> (function(){return "err";}); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt index 08fe22c08e0..6fbf1b12967 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt @@ -1,8 +1,9 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. Type '(b: number) => void' is not assignable to type '(a: A) => void'. - Types of parameters 'b' and 'a' are incompatible. - Type 'number' is not assignable to type 'A'. - Property 'foo' is missing in type 'Number'. + Signature '(a: A): void' has no corresponding signature in '(b: number) => void' + Types of parameters 'b' and 'a' are incompatible. + Type 'number' is not assignable to type 'A'. + Property 'foo' is missing in type 'Number'. ==== tests/cases/compiler/contextualTypingOfConditionalExpression2.ts (1 errors) ==== @@ -20,7 +21,8 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS ~~ !!! error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. !!! error TS2322: Type '(b: number) => void' is not assignable to type '(a: A) => void'. -!!! error TS2322: Types of parameters 'b' and 'a' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'A'. -!!! error TS2322: Property 'foo' is missing in type 'Number'. +!!! error TS2322: Signature '(a: A): void' has no corresponding signature in '(b: number) => void' +!!! error TS2322: Types of parameters 'b' and 'a' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'A'. +!!! error TS2322: Property 'foo' is missing in type 'Number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt index a11f0009016..530993a7e23 100644 --- a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt +++ b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt @@ -1,8 +1,10 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(16,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. - Type 'string' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'String'. + Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' + Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. - Type 'string' is not assignable to type 'Date'. + Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' + Type 'string' is not assignable to type 'Date'. ==== tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts (2 errors) ==== @@ -24,10 +26,12 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): var r5 = _.forEach(c2, f); ~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. -!!! error TS2345: Type 'string' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'String'. +!!! error TS2345: Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r6 = _.forEach(c2, (x) => { return x.toFixed() }); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. -!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity.errors.txt b/tests/baselines/reference/derivedClassTransitivity.errors.txt index c6b620beb18..5f47163f13f 100644 --- a/tests/baselines/reference/derivedClassTransitivity.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity.ts (1 errors) ==== @@ -28,7 +29,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1); var r2 = e.foo(''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity2.errors.txt b/tests/baselines/reference/derivedClassTransitivity2.errors.txt index a8d2003c876..16aa54ef101 100644 --- a/tests/baselines/reference/derivedClassTransitivity2.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity2.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity2.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. - Types of parameters 'y' and 'y' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, y: number): void' has no corresponding signature in '(x: number, y?: string) => void' + Types of parameters 'y' and 'y' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity2.ts (1 errors) ==== @@ -28,7 +29,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number, y: number): void' has no corresponding signature in '(x: number, y?: string) => void' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1, 1); var r2 = e.foo(1, ''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity3.errors.txt b/tests/baselines/reference/derivedClassTransitivity3.errors.txt index 9d301255dfd..837c6db67c4 100644 --- a/tests/baselines/reference/derivedClassTransitivity3.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity3.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity3.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: string, y: string): void' has no corresponding signature in '(x: string, y?: number) => void' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity3.ts (1 errors) ==== @@ -28,7 +29,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: string, y: string): void' has no corresponding signature in '(x: string, y?: number) => void' +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo('', ''); var r2 = e.foo('', 1); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity4.errors.txt b/tests/baselines/reference/derivedClassTransitivity4.errors.txt index c1a80e0a1d7..47d1d767fbd 100644 --- a/tests/baselines/reference/derivedClassTransitivity4.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity4.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity4.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity4.ts(19,9): error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. @@ -29,8 +30,9 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1); ~~~~~ !!! error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. diff --git a/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt b/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt index ae8fbe2ff5d..6f088a12a9a 100644 --- a/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt +++ b/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/derivedInterfaceCallSignature.ts(11,11): error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. Types of property 'x' are incompatible. Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. + Signature '(): (data: any, index?: number) => number' has no corresponding signature in '(x: (data: any, index?: number) => number) => D3SvgArea' ==== tests/cases/compiler/derivedInterfaceCallSignature.ts (1 errors) ==== @@ -19,6 +20,7 @@ tests/cases/compiler/derivedInterfaceCallSignature.ts(11,11): error TS2430: Inte !!! error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. !!! error TS2430: Types of property 'x' are incompatible. !!! error TS2430: Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. +!!! error TS2430: Signature '(): (data: any, index?: number) => number' has no corresponding signature in '(x: (data: any, index?: number) => number) => D3SvgArea' x(x: (data: any, index?: number) => number): D3SvgArea; y(y: (data: any, index?: number) => number): D3SvgArea; y0(): (data: any, index?: number) => number; diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt index c8037255a32..a3311319960 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt @@ -5,10 +5,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(8,4): error TS2345: Argument of type '[number, number, string[][], string]' is not assignable to parameter of type '[number, number, string[][]]'. Types of property 'pop' are incompatible. Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. - Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. - Type 'string' is not assignable to type 'number | string[][]'. - Type 'string' is not assignable to type 'string[][]'. - Property 'push' is missing in type 'String'. + Signature '(): number | string[][]' has no corresponding signature in '() => number | string[][] | string' + Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. + Type 'string' is not assignable to type 'number | string[][]'. + Type 'string' is not assignable to type 'string[][]'. + Property 'push' is missing in type 'String'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,8): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,16): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(23,14): error TS2345: Argument of type '{ x: string; y: boolean; }' is not assignable to parameter of type '{ x: number; y: any; }'. @@ -47,9 +48,10 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(55,7): error TS2420: Class 'C4' incorrectly implements interface 'F2'. Types of property 'd4' are incompatible. Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. - Types of parameters '__0' and '__0' are incompatible. - Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. - Property 'z' is missing in type '{ x: any; y: any; c: any; }'. + Signature '({x, y, z}?: { x: any; y: any; z: any; }): any' has no corresponding signature in '({x, y, c}: { x: any; y: any; c: any; }) => void' + Types of parameters '__0' and '__0' are incompatible. + Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. + Property 'z' is missing in type '{ x: any; y: any; c: any; }'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(56,8): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,18): error TS2300: Duplicate identifier 'number'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,26): error TS2300: Duplicate identifier 'number'. @@ -75,10 +77,11 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2345: Argument of type '[number, number, string[][], string]' is not assignable to parameter of type '[number, number, string[][]]'. !!! error TS2345: Types of property 'pop' are incompatible. !!! error TS2345: Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. -!!! error TS2345: Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. -!!! error TS2345: Type 'string' is not assignable to type 'number | string[][]'. -!!! error TS2345: Type 'string' is not assignable to type 'string[][]'. -!!! error TS2345: Property 'push' is missing in type 'String'. +!!! error TS2345: Signature '(): number | string[][]' has no corresponding signature in '() => number | string[][] | string' +!!! error TS2345: Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. +!!! error TS2345: Type 'string' is not assignable to type 'number | string[][]'. +!!! error TS2345: Type 'string' is not assignable to type 'string[][]'. +!!! error TS2345: Property 'push' is missing in type 'String'. // If the declaration includes an initializer expression (which is permitted only @@ -179,9 +182,10 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2420: Class 'C4' incorrectly implements interface 'F2'. !!! error TS2420: Types of property 'd4' are incompatible. !!! error TS2420: Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. -!!! error TS2420: Types of parameters '__0' and '__0' are incompatible. -!!! error TS2420: Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. -!!! error TS2420: Property 'z' is missing in type '{ x: any; y: any; c: any; }'. +!!! error TS2420: Signature '({x, y, z}?: { x: any; y: any; z: any; }): any' has no corresponding signature in '({x, y, c}: { x: any; y: any; c: any; }) => void' +!!! error TS2420: Types of parameters '__0' and '__0' are incompatible. +!!! error TS2420: Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. +!!! error TS2420: Property 'z' is missing in type '{ x: any; y: any; c: any; }'. d3([a, b, c]?) { } // Error, binding pattern can't be optional in implementation signature ~~~~~~~~~~ !!! error TS2463: A binding pattern parameter cannot be optional in an implementation signature. diff --git a/tests/baselines/reference/enumAssignability.errors.txt b/tests/baselines/reference/enumAssignability.errors.txt index 4a060ac3456..55e28ed97d9 100644 --- a/tests/baselines/reference/enumAssignability.errors.txt +++ b/tests/baselines/reference/enumAssignability.errors.txt @@ -6,9 +6,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi Property 'toDateString' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(33,9): error TS2322: Type 'E' is not assignable to type 'void'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(36,9): error TS2322: Type 'E' is not assignable to type '() => {}'. + Signature '(): {}' has no corresponding signature in 'Number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(37,9): error TS2322: Type 'E' is not assignable to type 'Function'. Property 'apply' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(38,9): error TS2322: Type 'E' is not assignable to type '(x: number) => string'. + Signature '(x: number): string' has no corresponding signature in 'Number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(39,5): error TS2322: Type 'E' is not assignable to type 'C'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(40,5): error TS2322: Type 'E' is not assignable to type 'I'. @@ -18,6 +20,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(42,9): error TS2322: Type 'E' is not assignable to type '{ foo: string; }'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(43,9): error TS2322: Type 'E' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in 'Number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(45,9): error TS2322: Type 'E' is not assignable to type 'String'. Property 'charAt' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(47,21): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. @@ -80,6 +83,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var j: () => {} = e; ~ !!! error TS2322: Type 'E' is not assignable to type '() => {}'. +!!! error TS2322: Signature '(): {}' has no corresponding signature in 'Number' var k: Function = e; ~ !!! error TS2322: Type 'E' is not assignable to type 'Function'. @@ -87,6 +91,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var l: (x: number) => string = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: number) => string'. +!!! error TS2322: Signature '(x: number): string' has no corresponding signature in 'Number' ac = e; ~~ !!! error TS2322: Type 'E' is not assignable to type 'C'. @@ -106,6 +111,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var o: (x: T) => T = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: T) => T'. +!!! error TS2322: Signature '(x: T): T' has no corresponding signature in 'Number' var p: Number = e; var q: String = e; ~ diff --git a/tests/baselines/reference/errorElaboration.errors.txt b/tests/baselines/reference/errorElaboration.errors.txt index 94742d7d98b..42903f7fa04 100644 --- a/tests/baselines/reference/errorElaboration.errors.txt +++ b/tests/baselines/reference/errorElaboration.errors.txt @@ -1,7 +1,8 @@ tests/cases/compiler/errorElaboration.ts(12,5): error TS2345: Argument of type '() => Container>' is not assignable to parameter of type '() => Container>'. - Type 'Container>' is not assignable to type 'Container>'. - Type 'Ref' is not assignable to type 'Ref'. - Type 'string' is not assignable to type 'number'. + Signature '(): Container>' has no corresponding signature in '() => Container>' + Type 'Container>' is not assignable to type 'Container>'. + Type 'Ref' is not assignable to type 'Ref'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/errorElaboration.ts (1 errors) ==== @@ -19,7 +20,8 @@ tests/cases/compiler/errorElaboration.ts(12,5): error TS2345: Argument of type ' foo(a); ~ !!! error TS2345: Argument of type '() => Container>' is not assignable to parameter of type '() => Container>'. -!!! error TS2345: Type 'Container>' is not assignable to type 'Container>'. -!!! error TS2345: Type 'Ref' is not assignable to type 'Ref'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(): Container>' has no corresponding signature in '() => Container>' +!!! error TS2345: Type 'Container>' is not assignable to type 'Container>'. +!!! error TS2345: Type 'Ref' is not assignable to type 'Ref'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt b/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt index 403e79b8742..8fbd4052bf9 100644 --- a/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt +++ b/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(1,5): error TS2322: Type '() => void' is not assignable to type '() => boolean'. - Type 'void' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'boolean'. tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(2,37): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. @@ -7,7 +8,8 @@ tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(2,37): error TS2355: var n1: () => boolean = function () { }; // expect an error here ~~ !!! error TS2322: Type '() => void' is not assignable to type '() => boolean'. -!!! error TS2322: Type 'void' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'boolean'. var n2: () => boolean = function ():boolean { }; // expect an error here ~~~~~~~ !!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt index 12478442472..6cacd56eb17 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt @@ -16,21 +16,26 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd Types of property 'id' are incompatible. Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(46,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(47,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(48,5): error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. - Type 'string' is not assignable to type 'number'. + Signature '(x: string): number' has no corresponding signature in '(x: string) => string' + Type 'string' is not assignable to type 'number'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(50,5): error TS2322: Type 'typeof N' is not assignable to type 'typeof M'. Types of property 'A' are incompatible. Type 'typeof N.A' is not assignable to type 'typeof M.A'. - Type 'N.A' is not assignable to type 'M.A'. - Property 'name' is missing in type 'A'. + Signature 'new (): A' has no corresponding signature in 'typeof A' + Type 'N.A' is not assignable to type 'M.A'. + Property 'name' is missing in type 'A'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(51,5): error TS2322: Type 'N.A' is not assignable to type 'M.A'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(52,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: number) => string'. - Type 'boolean' is not assignable to type 'string'. + Signature '(x: number): string' has no corresponding signature in '(x: number) => boolean' + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts (15 errors) ==== @@ -108,31 +113,36 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd var aFunction: typeof F = F2; ~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var anOtherFunction: (x: string) => number = F2; ~~~~~~~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var aLambda: typeof F = (x) => 'a string'; ~~~~~~~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Type 'string' is not assignable to type 'number'. var aModule: typeof M = N; ~~~~~~~ !!! error TS2322: Type 'typeof N' is not assignable to type 'typeof M'. !!! error TS2322: Types of property 'A' are incompatible. !!! error TS2322: Type 'typeof N.A' is not assignable to type 'typeof M.A'. -!!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. -!!! error TS2322: Property 'name' is missing in type 'A'. +!!! error TS2322: Signature 'new (): A' has no corresponding signature in 'typeof A' +!!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. +!!! error TS2322: Property 'name' is missing in type 'A'. var aClassInModule: M.A = new N.A(); ~~~~~~~~~~~~~~ !!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. var aFunctionInModule: typeof M.F2 = F2; ~~~~~~~~~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: number) => string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: number): string' has no corresponding signature in '(x: number) => boolean' +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt index a44c95377dc..448851640cd 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt @@ -1,7 +1,8 @@ tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2420: Class 'D' incorrectly implements interface 'C'. Types of property 'bar' are incompatible. Type '() => string' is not assignable to type '() => number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(12,5): error TS2322: Type 'number' is not assignable to type 'string'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'. @@ -18,7 +19,8 @@ tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: !!! error TS2420: Class 'D' incorrectly implements interface 'C'. !!! error TS2420: Types of property 'bar' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => number'. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2420: Type 'string' is not assignable to type 'number'. baz() { } } diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt b/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt index e56b58a268d..ca0c6bb9dca 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt @@ -1,8 +1,10 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(11,27): error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. - Type 'Base' is not assignable to type 'Derived'. - Property 'toBase' is missing in type 'Base'. + Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' + Type 'Base' is not assignable to type 'Derived'. + Property 'toBase' is missing in type 'Base'. tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. - Type 'Base' is not assignable to type 'Derived'. + Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' + Type 'Base' is not assignable to type 'Derived'. ==== tests/cases/compiler/fixingTypeParametersRepeatedly2.ts (2 errors) ==== @@ -19,8 +21,9 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Ar var result = foo(derived, d => d.toBase()); ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. -!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. -!!! error TS2345: Property 'toBase' is missing in type 'Base'. +!!! error TS2345: Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' +!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. +!!! error TS2345: Property 'toBase' is missing in type 'Base'. // bar should type check just like foo. // The same error should be observed in both cases. @@ -29,4 +32,5 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Ar var result = bar(derived, d => d.toBase()); ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. -!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. \ No newline at end of file +!!! error TS2345: Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' +!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt index 6434b5294d5..85c04fffdd0 100644 --- a/tests/baselines/reference/for-of30.errors.txt +++ b/tests/baselines/reference/for-of30.errors.txt @@ -1,9 +1,11 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => StringIterator' is not assignable to type '() => Iterator'. - Type 'StringIterator' is not assignable to type 'Iterator'. - Types of property 'return' are incompatible. - Type 'number' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(): Iterator' has no corresponding signature in '() => StringIterator' + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'return' are incompatible. + Type 'number' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' ==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ==== @@ -12,9 +14,11 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'return' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => StringIterator' +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'return' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' class StringIterator { next() { diff --git a/tests/baselines/reference/for-of31.errors.txt b/tests/baselines/reference/for-of31.errors.txt index 6d5f6e816be..111235d2f57 100644 --- a/tests/baselines/reference/for-of31.errors.txt +++ b/tests/baselines/reference/for-of31.errors.txt @@ -1,11 +1,13 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => StringIterator' is not assignable to type '() => Iterator'. - Type 'StringIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. - Type '{ value: string; }' is not assignable to type 'IteratorResult'. - Property 'done' is missing in type '{ value: string; }'. + Signature '(): Iterator' has no corresponding signature in '() => StringIterator' + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: string; }' + Type '{ value: string; }' is not assignable to type 'IteratorResult'. + Property 'done' is missing in type '{ value: string; }'. ==== tests/cases/conformance/es6/for-ofStatements/for-of31.ts (1 errors) ==== @@ -14,11 +16,13 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'. -!!! error TS2322: Property 'done' is missing in type '{ value: string; }'. +!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => StringIterator' +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: string; }' +!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'. +!!! error TS2322: Property 'done' is missing in type '{ value: string; }'. class StringIterator { next() { diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt index 871368da9fe..baf2af9794b 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt +++ b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt @@ -3,15 +3,23 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(6,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(7,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(23,14): error TS2345: Argument of type 'Function' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'Function' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(24,15): error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string[]' is not assignable to type 'string'. + Signature '(x: string): string' has no corresponding signature in '(x: string[]) => string[]' + Types of parameters 'x' and 'x' are incompatible. + Type 'string[]' is not assignable to type 'string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(25,15): error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'typeof C' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(26,15): error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'new (x: string) => string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(28,16): error TS2345: Argument of type '(x: U, y: V) => U' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in '(x: U, y: V) => U' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(29,16): error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'typeof C2' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(30,16): error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(34,16): error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. + Signature '(x: string): string' has no corresponding signature in 'F2' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(36,38): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(37,10): error TS2345: Argument of type 'T' is not assignable to parameter of type '(x: string) => string'. Type '() => void' is not assignable to type '(x: string) => string'. @@ -51,33 +59,41 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r = foo2(new Function()); ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type 'Function' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'Function' var r2 = foo2((x: string[]) => x); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string[]' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '(x: string[]) => string[]' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string[]' is not assignable to type 'string'. var r6 = foo2(C); ~ !!! error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'typeof C' var r7 = foo2(b); ~ !!! error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'new (x: string) => string' var r8 = foo2((x: U) => x); // no error expected var r11 = foo2((x: U, y: V) => x); ~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: U, y: V) => U' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '(x: U, y: V) => U' var r13 = foo2(C2); ~~ !!! error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'typeof C2' var r14 = foo2(b2); ~~ !!! error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'new (x: T) => T' interface F2 extends Function { foo: string; } var f2: F2; var r16 = foo2(f2); ~~ !!! error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'F2' function fff(x: T, y: U) { ~~~~~~~~~~~ diff --git a/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt b/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt index 6a3a7998f09..6ac40bcf2d9 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt +++ b/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt @@ -1,6 +1,7 @@ tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping2.ts(11,1): error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '((n: number, s: string) => number) | ((n: number, s: string) => string)'. Type '(foo: number, bar: string) => boolean' is not assignable to type '(n: number, s: string) => string'. - Type 'boolean' is not assignable to type 'string'. + Signature '(n: number, s: string): string' has no corresponding signature in '(foo: number, bar: string) => boolean' + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping2.ts (1 errors) ==== @@ -18,4 +19,5 @@ tests/cases/conformance/expressions/contextualTyping/functionExpressionContextua ~~ !!! error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '((n: number, s: string) => number) | ((n: number, s: string) => string)'. !!! error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '(n: number, s: string) => string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2322: Signature '(n: number, s: string): string' has no corresponding signature in '(foo: number, bar: string) => boolean' +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt index 86c4728dda2..86f89e94b04 100644 --- a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt +++ b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. - Types of parameters 'delimiter' and 'eventEmitter' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(eventEmitter: number, buffer: string): void' has no corresponding signature in '(delimiter?: string) => ParserFunc' + Types of parameters 'delimiter' and 'eventEmitter' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/functionSignatureAssignmentCompat1.ts (1 errors) ==== @@ -16,6 +17,7 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: var d: ParserFunc = parsers.readline; // not ok ~ !!! error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. -!!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(eventEmitter: number, buffer: string): void' has no corresponding signature in '(delimiter?: string) => ParserFunc' +!!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var e: ParserFunc = parsers.readline(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck25.errors.txt b/tests/baselines/reference/generatorTypeCheck25.errors.txt index 8d414c7c471..65aa94001b5 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,14 +1,17 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterable'. - Type 'IterableIterator' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '() => IterableIterator' is not assignable to type '() => Iterator'. - Type 'IterableIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'Bar | Baz' is not assignable to type 'Foo'. - Type 'Baz' is not assignable to type 'Foo'. - Property 'x' is missing in type 'Baz'. + Signature '(): Iterable' has no corresponding signature in '() => IterableIterator' + Type 'IterableIterator' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '() => IterableIterator' is not assignable to type '() => Iterator'. + Signature '(): Iterator' has no corresponding signature in '() => IterableIterator' + Type 'IterableIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'Bar | Baz' is not assignable to type 'Foo'. + Type 'Baz' is not assignable to type 'Foo'. + Property 'x' is missing in type 'Baz'. ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts (1 errors) ==== @@ -18,16 +21,19 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error var g3: () => Iterable = function* () { ~~ !!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterable'. -!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterable'. -!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. -!!! error TS2322: Type 'Baz' is not assignable to type 'Foo'. -!!! error TS2322: Property 'x' is missing in type 'Baz'. +!!! error TS2322: Signature '(): Iterable' has no corresponding signature in '() => IterableIterator' +!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterator'. +!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => IterableIterator' +!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' +!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. +!!! error TS2322: Type 'Baz' is not assignable to type 'Foo'. +!!! error TS2322: Property 'x' is missing in type 'Baz'. yield; yield new Bar; yield new Baz; diff --git a/tests/baselines/reference/generatorTypeCheck31.errors.txt b/tests/baselines/reference/generatorTypeCheck31.errors.txt index a0336b464a4..9b77bb178c9 100644 --- a/tests/baselines/reference/generatorTypeCheck31.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck31.errors.txt @@ -1,4 +1,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts(2,11): error TS2322: Type 'IterableIterator<(x: any) => any>' is not assignable to type '() => Iterable<(x: string) => number>'. + Signature '(): Iterable<(x: string) => number>' has no corresponding signature in 'IterableIterator<(x: any) => any>' ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts (1 errors) ==== @@ -10,4 +11,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts(2,11): erro } () ~~~~~~~~ !!! error TS2322: Type 'IterableIterator<(x: any) => any>' is not assignable to type '() => Iterable<(x: string) => number>'. +!!! error TS2322: Signature '(): Iterable<(x: string) => number>' has no corresponding signature in 'IterableIterator<(x: any) => any>' } \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck8.errors.txt b/tests/baselines/reference/generatorTypeCheck8.errors.txt index cedfecda60b..abd1db46bd1 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,8 +1,9 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error TS2322: Type 'IterableIterator' is not assignable to type 'BadGenerator'. Types of property 'next' are incompatible. Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'string' is not assignable to type 'number'. + Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts (1 errors) ==== @@ -12,5 +13,6 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error !!! error TS2322: Type 'IterableIterator' is not assignable to type 'BadGenerator'. !!! error TS2322: Types of property 'next' are incompatible. !!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' +!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt index f335319cafd..3b52ed1e597 100644 --- a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt +++ b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt @@ -3,8 +3,9 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(12,5): error TS23 Type 'A' is not assignable to type 'Comparable'. Types of property 'compareTo' are incompatible. Type '(other: number) => number' is not assignable to type '(other: string) => number'. - Types of parameters 'other' and 'other' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(other: string): number' has no corresponding signature in '(other: number) => number' + Types of parameters 'other' and 'other' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(13,5): error TS2322: Type '{ x: A; }' is not assignable to type 'I'. Types of property 'x' are incompatible. Type 'A' is not assignable to type 'Comparable'. @@ -35,8 +36,9 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(17,5): error TS23 !!! error TS2322: Type 'A' is not assignable to type 'Comparable'. !!! error TS2322: Types of property 'compareTo' are incompatible. !!! error TS2322: Type '(other: number) => number' is not assignable to type '(other: string) => number'. -!!! error TS2322: Types of parameters 'other' and 'other' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(other: string): number' has no corresponding signature in '(other: number) => number' +!!! error TS2322: Types of parameters 'other' and 'other' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var a2: I = function (): { x: A } { ~~ !!! error TS2322: Type '{ x: A; }' is not assignable to type 'I'. diff --git a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt index 428ebecf5b0..a6c6de7ffa7 100644 --- a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt +++ b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt @@ -1,15 +1,19 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(24,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(53,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(69,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(85,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'boolean'. + Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts (4 errors) ==== @@ -39,8 +43,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -72,8 +77,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -92,8 +98,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -112,7 +119,8 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'boolean'. +!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'boolean'. } \ No newline at end of file diff --git a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt index a014ef85b6c..451a9e2900d 100644 --- a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt +++ b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt @@ -1,9 +1,11 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts(11,14): error TS2345: Argument of type '{ cb: new (x: T, y: T) => string; }' is not assignable to parameter of type '{ cb: new (t: any) => string; }'. Types of property 'cb' are incompatible. Type 'new (x: T, y: T) => string' is not assignable to type 'new (t: any) => string'. + Signature 'new (t: any): string' has no corresponding signature in 'new (x: T, y: T) => string' tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts(13,14): error TS2345: Argument of type '{ cb: new (x: string, y: number) => string; }' is not assignable to parameter of type '{ cb: new (t: string) => string; }'. Types of property 'cb' are incompatible. Type 'new (x: string, y: number) => string' is not assignable to type 'new (t: string) => string'. + Signature 'new (t: string): string' has no corresponding signature in 'new (x: string, y: number) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts (2 errors) ==== @@ -22,12 +24,14 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithCon !!! error TS2345: Argument of type '{ cb: new (x: T, y: T) => string; }' is not assignable to parameter of type '{ cb: new (t: any) => string; }'. !!! error TS2345: Types of property 'cb' are incompatible. !!! error TS2345: Type 'new (x: T, y: T) => string' is not assignable to type 'new (t: any) => string'. +!!! error TS2345: Signature 'new (t: any): string' has no corresponding signature in 'new (x: T, y: T) => string' var arg3: { cb: new (x: string, y: number) => string }; var r3 = foo(arg3); // error ~~~~ !!! error TS2345: Argument of type '{ cb: new (x: string, y: number) => string; }' is not assignable to parameter of type '{ cb: new (t: string) => string; }'. !!! error TS2345: Types of property 'cb' are incompatible. !!! error TS2345: Type 'new (x: string, y: number) => string' is not assignable to type 'new (t: string) => string'. +!!! error TS2345: Signature 'new (t: string): string' has no corresponding signature in 'new (x: string, y: number) => string' function foo2(arg: { cb: new(t: T, t2: T) => U }) { return new arg.cb(null, null); diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt index c264058ad9f..4677d24164d 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt @@ -3,18 +3,21 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(15,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(16,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(25,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. - Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'RegExp'. + Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' + Types of parameters 'a' and 'x' are incompatible. + Type 'T' is not assignable to type 'Date'. + Type 'RegExp' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'RegExp'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(37,36): error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. - Type 'F' is not assignable to type 'E'. + Signature '(x: E): E' has no corresponding signature in '(x: E) => F' + Type 'F' is not assignable to type 'E'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(50,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(51,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(60,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. - Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. + Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' + Types of parameters 'a' and 'x' are incompatible. + Type 'T' is not assignable to type 'Date'. + Type 'RegExp' is not assignable to type 'Date'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,51): error TS2304: Cannot find name 'U'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,57): error TS2304: Cannot find name 'U'. @@ -54,10 +57,11 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo2((a: T) => a, (b: T) => b); // error ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. -!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. +!!! error TS2345: Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' +!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. +!!! error TS2345: Type 'T' is not assignable to type 'Date'. +!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. var r7b = foo2((a) => a, (b) => b); // valid, T is inferred to be Date } @@ -72,7 +76,8 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo3(E.A, (x) => E.A, (x) => F.A); // error ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. -!!! error TS2345: Type 'F' is not assignable to type 'E'. +!!! error TS2345: Signature '(x: E): E' has no corresponding signature in '(x: E) => F' +!!! error TS2345: Type 'F' is not assignable to type 'E'. } module TU { @@ -102,9 +107,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo2((a: T) => a, (b: T) => b); ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. -!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. +!!! error TS2345: Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' +!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. +!!! error TS2345: Type 'T' is not assignable to type 'Date'. +!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. var r7b = foo2((a) => a, (b) => b); } diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt index 87ae6b63855..cfee8e336b3 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt @@ -1,8 +1,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(32,11): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(y: string) => string' is not a valid type argument because it is not a supertype of candidate '(a: string) => boolean'. - Type 'boolean' is not assignable to type 'string'. + Signature '(y: string): string' has no corresponding signature in '(a: string) => boolean' + Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(33,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. + Signature '(n: Object): number' has no corresponding signature in 'Number' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts (2 errors) ==== @@ -41,8 +43,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen ~~~~ !!! error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. !!! error TS2453: Type argument candidate '(y: string) => string' is not a valid type argument because it is not a supertype of candidate '(a: string) => boolean'. -!!! error TS2453: Type 'boolean' is not assignable to type 'string'. +!!! error TS2453: Signature '(y: string): string' has no corresponding signature in '(a: string) => boolean' +!!! error TS2453: Type 'boolean' is not assignable to type 'string'. var r12 = foo2(x, (a1: (y: string) => boolean) => (n: Object) => 1, (a2: (z: string) => boolean) => 2); // error ~~~~ !!! error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. -!!! error TS2453: Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. \ No newline at end of file +!!! error TS2453: Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. +!!! error TS2453: Signature '(n: Object): number' has no corresponding signature in 'Number' \ No newline at end of file diff --git a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt index 80bcf12494a..230311a6642 100644 --- a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt @@ -1,4 +1,5 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedConstructorTypedArguments2.ts(31,20): error TS2345: Argument of type 'new (x: T, y: T) => string' is not assignable to parameter of type '{ new (x: any): string; new (x: any, y?: any): string; }'. + Signature 'new (x: any): string' has no corresponding signature in 'new (x: T, y: T) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedConstructorTypedArguments2.ts (1 errors) ==== @@ -35,6 +36,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOve var r10 = foo6(b); // error ~ !!! error TS2345: Argument of type 'new (x: T, y: T) => string' is not assignable to parameter of type '{ new (x: any): string; new (x: any, y?: any): string; }'. +!!! error TS2345: Signature 'new (x: any): string' has no corresponding signature in 'new (x: T, y: T) => string' function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { return cb; diff --git a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt index 32fe6a09344..0e2481feee8 100644 --- a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt @@ -1,4 +1,5 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedFunctionTypedArguments2.ts(28,20): error TS2345: Argument of type '(x: T, y: T) => string' is not assignable to parameter of type '{ (x: any): string; (x: any, y?: any): string; }'. + Signature '(x: any): string' has no corresponding signature in '(x: T, y: T) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedFunctionTypedArguments2.ts (1 errors) ==== @@ -32,6 +33,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOve var r10 = foo6((x: T, y: T) => ''); // error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, y: T) => string' is not assignable to parameter of type '{ (x: any): string; (x: any, y?: any): string; }'. +!!! error TS2345: Signature '(x: any): string' has no corresponding signature in '(x: T, y: T) => string' function foo7(x:T, cb: { (x: T): string; (x: T, y?: T): string }) { return cb; diff --git a/tests/baselines/reference/genericCallWithTupleType.errors.txt b/tests/baselines/reference/genericCallWithTupleType.errors.txt index d03f8d5e68a..518a4714247 100644 --- a/tests/baselines/reference/genericCallWithTupleType.errors.txt +++ b/tests/baselines/reference/genericCallWithTupleType.errors.txt @@ -1,9 +1,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(12,1): error TS2322: Type '[string, number, boolean, boolean]' is not assignable to type '[string, number]'. Types of property 'pop' are incompatible. Type '() => string | number | boolean' is not assignable to type '() => string | number'. - Type 'string | number | boolean' is not assignable to type 'string | number'. - Type 'boolean' is not assignable to type 'string | number'. - Type 'boolean' is not assignable to type 'number'. + Signature '(): string | number' has no corresponding signature in '() => string | number | boolean' + Type 'string | number | boolean' is not assignable to type 'string | number'. + Type 'boolean' is not assignable to type 'string | number'. + Type 'boolean' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(14,1): error TS2322: Type '{ a: string; }' is not assignable to type 'string | number'. Type '{ a: string; }' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(22,1): error TS2322: Type '[number, string]' is not assignable to type '[string, number]'. @@ -33,9 +34,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTup !!! error TS2322: Type '[string, number, boolean, boolean]' is not assignable to type '[string, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number | boolean' is not assignable to type '() => string | number'. -!!! error TS2322: Type 'string | number | boolean' is not assignable to type 'string | number'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string | number'. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2322: Signature '(): string | number' has no corresponding signature in '() => string | number | boolean' +!!! error TS2322: Type 'string | number | boolean' is not assignable to type 'string | number'. +!!! error TS2322: Type 'boolean' is not assignable to type 'string | number'. +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. var e3 = i1.tuple1[2]; // {} i1.tuple1[3] = { a: "string" }; ~~~~~~~~~~~~ diff --git a/tests/baselines/reference/genericCombinators2.errors.txt b/tests/baselines/reference/genericCombinators2.errors.txt index d590f1030c3..3dcc1b3c873 100644 --- a/tests/baselines/reference/genericCombinators2.errors.txt +++ b/tests/baselines/reference/genericCombinators2.errors.txt @@ -1,8 +1,10 @@ tests/cases/compiler/genericCombinators2.ts(15,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. - Type 'string' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'String'. + Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' + Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. - Type 'string' is not assignable to type 'Date'. + Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' + Type 'string' is not assignable to type 'Date'. ==== tests/cases/compiler/genericCombinators2.ts (2 errors) ==== @@ -23,9 +25,11 @@ tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of ty var r5a = _.map(c2, (x, y) => { return x.toFixed() }); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. -!!! error TS2345: Type 'string' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'String'. +!!! error TS2345: Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r5b = _.map(c2, rf1); ~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. -!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file +!!! error TS2345: Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file diff --git a/tests/baselines/reference/genericSpecializations3.errors.txt b/tests/baselines/reference/genericSpecializations3.errors.txt index ccaa839f9d0..abfdf7a6640 100644 --- a/tests/baselines/reference/genericSpecializations3.errors.txt +++ b/tests/baselines/reference/genericSpecializations3.errors.txt @@ -1,18 +1,21 @@ tests/cases/compiler/genericSpecializations3.ts(8,7): error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericSpecializations3.ts(28,1): error TS2322: Type 'StringFoo2' is not assignable to type 'IntFoo'. Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. Types of property 'foo' are incompatible. Type '(x: number) => number' is not assignable to type '(x: string) => string'. - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: string): string' has no corresponding signature in '(x: number) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/genericSpecializations3.ts (3 errors) ==== @@ -28,8 +31,9 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => string' is not assignable to type '(x: number) => number'. -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Signature '(x: number): number' has no corresponding signature in '(x: string) => string' +!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'number'. foo(x: string): string { return null; } } @@ -54,15 +58,17 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2322: Type 'StringFoo2' is not assignable to type 'IntFoo'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => number'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. stringFoo2 = intFoo; // error ~~~~~~~~~~ !!! error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number) => number' is not assignable to type '(x: string) => string'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(x: string): string' has no corresponding signature in '(x: number) => number' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. class StringFoo3 implements IFoo { // error diff --git a/tests/baselines/reference/genericTypeAssertions2.errors.txt b/tests/baselines/reference/genericTypeAssertions2.errors.txt index eda4c83646c..72bdf8a23a6 100644 --- a/tests/baselines/reference/genericTypeAssertions2.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions2.errors.txt @@ -1,8 +1,9 @@ tests/cases/compiler/genericTypeAssertions2.ts(10,5): error TS2322: Type 'B' is not assignable to type 'A'. Types of property 'foo' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericTypeAssertions2.ts(11,5): error TS2322: Type 'A' is not assignable to type 'B'. Property 'bar' is missing in type 'A'. tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither type 'undefined[]' nor type 'A' is assignable to the other. @@ -24,8 +25,9 @@ tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither typ !!! error TS2322: Type 'B' is not assignable to type 'A'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r3: B = >new B(); // error ~~ !!! error TS2322: Type 'A' is not assignable to type 'B'. diff --git a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt index 0fe15afcf33..d8bd78992a7 100644 --- a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt +++ b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt @@ -1,18 +1,20 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(4,7): error TS2420: Class 'X' incorrectly implements interface 'I'. Types of property 'f' are incompatible. Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. - Types of parameters 'a' and 'a' are incompatible. - Type 'T' is not assignable to type '{ a: number; }'. - Type '{ a: string; }' is not assignable to type '{ a: number; }'. - Types of property 'a' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(a: { a: number; }): void' has no corresponding signature in '(a: T) => void' + Types of parameters 'a' and 'a' are incompatible. + Type 'T' is not assignable to type '{ a: number; }'. + Type '{ a: string; }' is not assignable to type '{ a: number; }'. + Types of property 'a' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. Types of property 'f' are incompatible. Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. - Types of parameters 'a' and 'a' are incompatible. - Type '{ a: string; }' is not assignable to type '{ a: number; }'. - Types of property 'a' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(a: { a: number; }): void' has no corresponding signature in '(a: { a: string; }) => void' + Types of parameters 'a' and 'a' are incompatible. + Type '{ a: string; }' is not assignable to type '{ a: number; }'. + Types of property 'a' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts (2 errors) ==== @@ -24,11 +26,12 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2420: Class 'X' incorrectly implements interface 'I'. !!! error TS2420: Types of property 'f' are incompatible. !!! error TS2420: Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. -!!! error TS2420: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2420: Type 'T' is not assignable to type '{ a: number; }'. -!!! error TS2420: Type '{ a: string; }' is not assignable to type '{ a: number; }'. -!!! error TS2420: Types of property 'a' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Signature '(a: { a: number; }): void' has no corresponding signature in '(a: T) => void' +!!! error TS2420: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2420: Type 'T' is not assignable to type '{ a: number; }'. +!!! error TS2420: Type '{ a: string; }' is not assignable to type '{ a: number; }'. +!!! error TS2420: Types of property 'a' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'number'. f(a: T): void { } } var x = new X<{ a: string }>(); @@ -37,8 +40,9 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. -!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type '{ a: string; }' is not assignable to type '{ a: number; }'. -!!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(a: { a: number; }): void' has no corresponding signature in '(a: { a: string; }) => void' +!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2322: Type '{ a: string; }' is not assignable to type '{ a: number; }'. +!!! error TS2322: Types of property 'a' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/generics4.errors.txt b/tests/baselines/reference/generics4.errors.txt index 06bfa122901..93828628bd2 100644 --- a/tests/baselines/reference/generics4.errors.txt +++ b/tests/baselines/reference/generics4.errors.txt @@ -2,7 +2,8 @@ tests/cases/compiler/generics4.ts(7,1): error TS2322: Type 'C' is not assigna Type 'Y' is not assignable to type 'X'. Types of property 'f' are incompatible. Type '() => boolean' is not assignable to type '() => string'. - Type 'boolean' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => boolean' + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/compiler/generics4.ts (1 errors) ==== @@ -18,4 +19,5 @@ tests/cases/compiler/generics4.ts(7,1): error TS2322: Type 'C' is not assigna !!! error TS2322: Type 'Y' is not assignable to type 'X'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '() => boolean' is not assignable to type '() => string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => boolean' +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt index 7a128b87764..9699ab80862 100644 --- a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt +++ b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt @@ -1,12 +1,14 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(7,7): error TS2420: Class 'C' incorrectly implements interface 'IFoo'. Types of property 'foo' are incompatible. Type '(x: string) => number' is not assignable to type '(x: T) => T'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'T'. + Signature '(x: T): T' has no corresponding signature in '(x: string) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'T'. tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. Types of property 'foo' are incompatible. Type '(x: Tstring) => number' is not assignable to type '(x: T) => T'. - Type 'number' is not assignable to type 'T'. + Signature '(x: T): T' has no corresponding signature in '(x: Tstring) => number' + Type 'number' is not assignable to type 'T'. ==== tests/cases/compiler/implementGenericWithMismatchedTypes.ts (2 errors) ==== @@ -21,8 +23,9 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: !!! error TS2420: Class 'C' incorrectly implements interface 'IFoo'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => number' is not assignable to type '(x: T) => T'. -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'T'. +!!! error TS2420: Signature '(x: T): T' has no corresponding signature in '(x: string) => number' +!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'T'. foo(x: string): number { return null; } @@ -36,7 +39,8 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: !!! error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: Tstring) => number' is not assignable to type '(x: T) => T'. -!!! error TS2420: Type 'number' is not assignable to type 'T'. +!!! error TS2420: Signature '(x: T): T' has no corresponding signature in '(x: Tstring) => number' +!!! error TS2420: Type 'number' is not assignable to type 'T'. foo(x: Tstring): number { return null; } diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index e612600a7f8..eddd01cc979 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -1,12 +1,14 @@ tests/cases/compiler/incompatibleTypes.ts(5,7): error TS2420: Class 'C1' incorrectly implements interface 'IFoo1'. Types of property 'p1' are incompatible. Type '() => string' is not assignable to type '() => number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(15,7): error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. Types of property 'p1' are incompatible. Type '(n: number) => number' is not assignable to type '(s: string) => number'. - Types of parameters 'n' and 's' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(s: string): number' has no corresponding signature in '(n: number) => number' + Types of parameters 'n' and 's' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/incompatibleTypes.ts(25,7): error TS2420: Class 'C3' incorrectly implements interface 'IFoo3'. Types of property 'p1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -17,13 +19,16 @@ tests/cases/compiler/incompatibleTypes.ts(33,7): error TS2420: Class 'C4' incorr tests/cases/compiler/incompatibleTypes.ts(42,5): error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. Types of property 'p1' are incompatible. Type '() => string' is not assignable to type '(s: string) => number'. - Type 'string' is not assignable to type 'number'. + Signature '(s: string): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(49,7): error TS2345: Argument of type '{ e: number; f: number; }' is not assignable to parameter of type '{ c: { b: string; }; d: string; }'. Object literal may only specify known properties, and 'e' does not exist in type '{ c: { b: string; }; d: string; }'. tests/cases/compiler/incompatibleTypes.ts(66,47): error TS2322: Type '{ e: number; f: number; }' is not assignable to type '{ a: { a: string; }; b: string; }'. Object literal may only specify known properties, and 'e' does not exist in type '{ a: { a: string; }; b: string; }'. tests/cases/compiler/incompatibleTypes.ts(72,5): error TS2322: Type 'number' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'Number' tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. + Signature '(): any' has no corresponding signature in '(a: any) => number' ==== tests/cases/compiler/incompatibleTypes.ts (9 errors) ==== @@ -36,7 +41,8 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2420: Class 'C1' incorrectly implements interface 'IFoo1'. !!! error TS2420: Types of property 'p1' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => number'. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2420: Type 'string' is not assignable to type 'number'. public p1() { return "s"; } @@ -51,8 +57,9 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. !!! error TS2420: Types of property 'p1' are incompatible. !!! error TS2420: Type '(n: number) => number' is not assignable to type '(s: string) => number'. -!!! error TS2420: Types of parameters 'n' and 's' are incompatible. -!!! error TS2420: Type 'number' is not assignable to type 'string'. +!!! error TS2420: Signature '(s: string): number' has no corresponding signature in '(n: number) => number' +!!! error TS2420: Types of parameters 'n' and 's' are incompatible. +!!! error TS2420: Type 'number' is not assignable to type 'string'. public p1(n:number) { return 0; } @@ -93,7 +100,8 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. !!! error TS2345: Types of property 'p1' are incompatible. !!! error TS2345: Type '() => string' is not assignable to type '(s: string) => number'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(s: string): number' has no corresponding signature in '() => string' +!!! error TS2345: Type 'string' is not assignable to type 'number'. function of1(n: { a: { a: string; }; b: string; }): number; @@ -132,8 +140,10 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => var i1c1: { (): string; } = 5; ~~~~ !!! error TS2322: Type 'number' is not assignable to type '() => string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' var fp1: () =>any = a => 0; ~~~ !!! error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. +!!! error TS2322: Signature '(): any' has no corresponding signature in '(a: any) => number' \ No newline at end of file diff --git a/tests/baselines/reference/inheritance.errors.txt b/tests/baselines/reference/inheritance.errors.txt index c667e8b001e..eef06b4c961 100644 --- a/tests/baselines/reference/inheritance.errors.txt +++ b/tests/baselines/reference/inheritance.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/inheritance.ts(30,7): error TS2415: Class 'Baad' incorrectly extends base class 'Good'. Types of property 'g' are incompatible. Type '(n: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(n: number) => number' tests/cases/compiler/inheritance.ts(31,12): error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. @@ -39,6 +40,7 @@ tests/cases/compiler/inheritance.ts(31,12): error TS2425: Class 'Good' defines i !!! error TS2415: Class 'Baad' incorrectly extends base class 'Good'. !!! error TS2415: Types of property 'g' are incompatible. !!! error TS2415: Type '(n: number) => number' is not assignable to type '() => number'. +!!! error TS2415: Signature '(): number' has no corresponding signature in '(n: number) => number' public f(): number { return 0; } ~ !!! error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. diff --git a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt index 6fde83e08b0..25dd3c2ef3b 100644 --- a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(7,7): error TS2415: Class 'b' incorrectly extends base class 'a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'String' tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS2423: Class 'a' defines instance member function 'x', but extended class 'b' defines it as instance member accessor. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -18,6 +19,7 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error T !!! error TS2415: Class 'b' incorrectly extends base class 'a'. !!! error TS2415: Types of property 'x' are incompatible. !!! error TS2415: Type 'string' is not assignable to type '() => string'. +!!! error TS2415: Signature '(): string' has no corresponding signature in 'String' get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt index 38b1ed61fac..646047f8633 100644 --- a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'String' tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(8,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -17,6 +18,7 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. +!!! error TS2417: Signature '(): string' has no corresponding signature in 'String' static get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt index 22748fda783..5e983c0d806 100644 --- a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'String' ==== tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts (1 errors) ==== @@ -15,5 +16,6 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. +!!! error TS2417: Signature '(): string' has no corresponding signature in 'String' static x: string; } \ No newline at end of file diff --git a/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt b/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt index 0b7e00d95ce..6c67e28e2f9 100644 --- a/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt +++ b/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt @@ -1,7 +1,8 @@ tests/cases/compiler/inheritedModuleMembersForClodule.ts(7,7): error TS2417: Class static side 'typeof D' incorrectly extends base class static side 'typeof C'. Types of property 'foo' are incompatible. Type '() => number' is not assignable to type '() => string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => number' + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/inheritedModuleMembersForClodule.ts (1 errors) ==== @@ -16,7 +17,8 @@ tests/cases/compiler/inheritedModuleMembersForClodule.ts(7,7): error TS2417: Cla !!! error TS2417: Class static side 'typeof D' incorrectly extends base class static side 'typeof C'. !!! error TS2417: Types of property 'foo' are incompatible. !!! error TS2417: Type '() => number' is not assignable to type '() => string'. -!!! error TS2417: Type 'number' is not assignable to type 'string'. +!!! error TS2417: Signature '(): string' has no corresponding signature in '() => number' +!!! error TS2417: Type 'number' is not assignable to type 'string'. } module D { diff --git a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt index 080316f8daf..cca68d4ef96 100644 --- a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt +++ b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/instanceMemberAssignsToClassPrototype.ts(7,9): error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. - Type 'void' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'number'. ==== tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/instanceMemberAssignsToClassPrototype.ts (1 errors) ==== @@ -12,7 +13,8 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclara C.prototype.bar = () => { } // error ~~~~~~~~~~~~~~~ !!! error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'number'. C.prototype.bar = (x) => x; // ok C.prototype.bar = (x: number) => 1; // ok return 1; diff --git a/tests/baselines/reference/intTypeCheck.errors.txt b/tests/baselines/reference/intTypeCheck.errors.txt index e48d1b1dc73..d9f3f021887 100644 --- a/tests/baselines/reference/intTypeCheck.errors.txt +++ b/tests/baselines/reference/intTypeCheck.errors.txt @@ -14,18 +14,27 @@ tests/cases/compiler/intTypeCheck.ts(106,20): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(106,21): error TS2304: Cannot find name 'i1'. tests/cases/compiler/intTypeCheck.ts(107,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(112,5): error TS2322: Type '{}' is not assignable to type 'i2'. + Signature '(): any' has no corresponding signature in '{}' tests/cases/compiler/intTypeCheck.ts(113,5): error TS2322: Type 'Object' is not assignable to type 'i2'. + Signature '(): any' has no corresponding signature in 'Object' tests/cases/compiler/intTypeCheck.ts(114,17): error TS2350: Only a void function can be called with the 'new' keyword. tests/cases/compiler/intTypeCheck.ts(115,5): error TS2322: Type 'Base' is not assignable to type 'i2'. + Signature '(): any' has no corresponding signature in 'Base' tests/cases/compiler/intTypeCheck.ts(120,5): error TS2322: Type 'boolean' is not assignable to type 'i2'. + Signature '(): any' has no corresponding signature in 'Boolean' tests/cases/compiler/intTypeCheck.ts(120,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(120,22): error TS2304: Cannot find name 'i2'. tests/cases/compiler/intTypeCheck.ts(121,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(126,5): error TS2322: Type '{}' is not assignable to type 'i3'. + Signature 'new (): any' has no corresponding signature in '{}' tests/cases/compiler/intTypeCheck.ts(127,5): error TS2322: Type 'Object' is not assignable to type 'i3'. + Signature 'new (): any' has no corresponding signature in 'Object' tests/cases/compiler/intTypeCheck.ts(129,5): error TS2322: Type 'Base' is not assignable to type 'i3'. + Signature 'new (): any' has no corresponding signature in 'Base' tests/cases/compiler/intTypeCheck.ts(131,5): error TS2322: Type '() => void' is not assignable to type 'i3'. + Signature 'new (): any' has no corresponding signature in '() => void' tests/cases/compiler/intTypeCheck.ts(134,5): error TS2322: Type 'boolean' is not assignable to type 'i3'. + Signature 'new (): any' has no corresponding signature in 'Boolean' tests/cases/compiler/intTypeCheck.ts(134,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(134,22): error TS2304: Cannot find name 'i3'. tests/cases/compiler/intTypeCheck.ts(135,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -50,20 +59,30 @@ tests/cases/compiler/intTypeCheck.ts(162,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(162,22): error TS2304: Cannot find name 'i5'. tests/cases/compiler/intTypeCheck.ts(163,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(168,5): error TS2322: Type '{}' is not assignable to type 'i6'. + Signature '(): any' has no corresponding signature in '{}' tests/cases/compiler/intTypeCheck.ts(169,5): error TS2322: Type 'Object' is not assignable to type 'i6'. + Signature '(): any' has no corresponding signature in 'Object' tests/cases/compiler/intTypeCheck.ts(170,17): error TS2350: Only a void function can be called with the 'new' keyword. tests/cases/compiler/intTypeCheck.ts(171,5): error TS2322: Type 'Base' is not assignable to type 'i6'. + Signature '(): any' has no corresponding signature in 'Base' tests/cases/compiler/intTypeCheck.ts(173,5): error TS2322: Type '() => void' is not assignable to type 'i6'. - Type 'void' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'number'. tests/cases/compiler/intTypeCheck.ts(176,5): error TS2322: Type 'boolean' is not assignable to type 'i6'. + Signature '(): any' has no corresponding signature in 'Boolean' tests/cases/compiler/intTypeCheck.ts(176,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(176,22): error TS2304: Cannot find name 'i6'. tests/cases/compiler/intTypeCheck.ts(177,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(182,5): error TS2322: Type '{}' is not assignable to type 'i7'. + Signature 'new (): any' has no corresponding signature in '{}' tests/cases/compiler/intTypeCheck.ts(183,5): error TS2322: Type 'Object' is not assignable to type 'i7'. + Signature 'new (): any' has no corresponding signature in 'Object' tests/cases/compiler/intTypeCheck.ts(185,17): error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. + Signature 'new (): any' has no corresponding signature in 'Base' tests/cases/compiler/intTypeCheck.ts(187,5): error TS2322: Type '() => void' is not assignable to type 'i7'. + Signature 'new (): any' has no corresponding signature in '() => void' tests/cases/compiler/intTypeCheck.ts(190,5): error TS2322: Type 'boolean' is not assignable to type 'i7'. + Signature 'new (): any' has no corresponding signature in 'Boolean' tests/cases/compiler/intTypeCheck.ts(190,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(190,22): error TS2304: Cannot find name 'i7'. tests/cases/compiler/intTypeCheck.ts(191,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -216,15 +235,18 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj12: i2 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i2'. +!!! error TS2322: Signature '(): any' has no corresponding signature in '{}' var obj13: i2 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i2'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Object' var obj14: i2 = new obj11; ~~~~~~~~~ !!! error TS2350: Only a void function can be called with the 'new' keyword. var obj15: i2 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i2'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Base' var obj16: i2 = null; var obj17: i2 = function ():any { return 0; }; //var obj18: i2 = function foo() { }; @@ -232,6 +254,7 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj20: i2 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i2'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Boolean' ~ !!! error TS1109: Expression expected. ~~ @@ -246,22 +269,27 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj23: i3 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i3'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{}' var obj24: i3 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i3'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' var obj25: i3 = new obj22; var obj26: i3 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i3'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Base' var obj27: i3 = null; var obj28: i3 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i3'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' //var obj29: i3 = function foo() { }; var obj30: i3 = anyVar; var obj31: i3 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i3'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Boolean' ~ !!! error TS1109: Expression expected. ~~ @@ -338,25 +366,30 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj56: i6 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i6'. +!!! error TS2322: Signature '(): any' has no corresponding signature in '{}' var obj57: i6 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i6'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Object' var obj58: i6 = new obj55; ~~~~~~~~~ !!! error TS2350: Only a void function can be called with the 'new' keyword. var obj59: i6 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i6'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Base' var obj60: i6 = null; var obj61: i6 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i6'. -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'number'. //var obj62: i6 = function foo() { }; var obj63: i6 = anyVar; var obj64: i6 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i6'. +!!! error TS2322: Signature '(): any' has no corresponding signature in 'Boolean' ~ !!! error TS1109: Expression expected. ~~ @@ -371,22 +404,27 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj67: i7 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i7'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{}' var obj68: i7 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i7'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' var obj69: i7 = new obj66; var obj70: i7 = new Base; ~~~~~~~~~~~~ !!! error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. +!!! error TS2352: Signature 'new (): any' has no corresponding signature in 'Base' var obj71: i7 = null; var obj72: i7 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i7'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' //var obj73: i7 = function foo() { }; var obj74: i7 = anyVar; var obj75: i7 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i7'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Boolean' ~ !!! error TS1109: Expression expected. ~~ diff --git a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt index 237358b42de..a1198d9fd37 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt +++ b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt @@ -1,7 +1,8 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(32,18): error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. - Types of parameters 'a' and 'a' are incompatible. - Type 'IFrenchEye' is not assignable to type 'IEye'. - Property 'color' is missing in type 'IFrenchEye'. + Signature '(a: IEye, b: IEye): number' has no corresponding signature in '(a: IFrenchEye, b: IFrenchEye) => number' + Types of parameters 'a' and 'a' are incompatible. + Type 'IFrenchEye' is not assignable to type 'IEye'. + Property 'color' is missing in type 'IFrenchEye'. tests/cases/compiler/interfaceAssignmentCompat.ts(37,29): error TS2339: Property '_map' does not exist on type 'typeof Color'. tests/cases/compiler/interfaceAssignmentCompat.ts(42,13): error TS2322: Type 'IEye' is not assignable to type 'IFrenchEye'. Property 'coleur' is missing in type 'IEye'. @@ -44,9 +45,10 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEy x=x.sort(CompareYeux); // parameter mismatch ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. -!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. -!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. +!!! error TS2345: Signature '(a: IEye, b: IEye): number' has no corresponding signature in '(a: IFrenchEye, b: IFrenchEye) => number' +!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. +!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. // type of z inferred from specialized array type var z=x.sort(CompareEyes); // ok diff --git a/tests/baselines/reference/interfaceImplementation1.errors.txt b/tests/baselines/reference/interfaceImplementation1.errors.txt index 45b011c6929..826e5650c83 100644 --- a/tests/baselines/reference/interfaceImplementation1.errors.txt +++ b/tests/baselines/reference/interfaceImplementation1.errors.txt @@ -3,6 +3,7 @@ tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' incorrectly implements interface 'I2'. Property 'iFn' is private in type 'C1' but not in type 'I2'. tests/cases/compiler/interfaceImplementation1.ts(34,5): error TS2322: Type '() => C2' is not assignable to type 'I4'. + Signature 'new (): I3' has no corresponding signature in '() => C2' ==== tests/cases/compiler/interfaceImplementation1.ts (3 errors) ==== @@ -48,6 +49,7 @@ tests/cases/compiler/interfaceImplementation1.ts(34,5): error TS2322: Type '() = var a:I4 = function(){ ~ !!! error TS2322: Type '() => C2' is not assignable to type 'I4'. +!!! error TS2322: Signature 'new (): I3' has no corresponding signature in '() => C2' return new C2(); } new a(); diff --git a/tests/baselines/reference/interfaceImplementation7.errors.txt b/tests/baselines/reference/interfaceImplementation7.errors.txt index b297015dfbe..531398ba532 100644 --- a/tests/baselines/reference/interfaceImplementation7.errors.txt +++ b/tests/baselines/reference/interfaceImplementation7.errors.txt @@ -3,8 +3,9 @@ tests/cases/compiler/interfaceImplementation7.ts(4,11): error TS2320: Interface tests/cases/compiler/interfaceImplementation7.ts(7,7): error TS2420: Class 'C1' incorrectly implements interface 'i4'. Types of property 'name' are incompatible. Type '() => string' is not assignable to type '() => { s: string; n: number; }'. - Type 'string' is not assignable to type '{ s: string; n: number; }'. - Property 's' is missing in type 'String'. + Signature '(): { s: string; n: number; }' has no corresponding signature in '() => string' + Type 'string' is not assignable to type '{ s: string; n: number; }'. + Property 's' is missing in type 'String'. ==== tests/cases/compiler/interfaceImplementation7.ts (2 errors) ==== @@ -22,8 +23,9 @@ tests/cases/compiler/interfaceImplementation7.ts(7,7): error TS2420: Class 'C1' !!! error TS2420: Class 'C1' incorrectly implements interface 'i4'. !!! error TS2420: Types of property 'name' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => { s: string; n: number; }'. -!!! error TS2420: Type 'string' is not assignable to type '{ s: string; n: number; }'. -!!! error TS2420: Property 's' is missing in type 'String'. +!!! error TS2420: Signature '(): { s: string; n: number; }' has no corresponding signature in '() => string' +!!! error TS2420: Type 'string' is not assignable to type '{ s: string; n: number; }'. +!!! error TS2420: Property 's' is missing in type 'String'. public name(): string { return ""; } } \ No newline at end of file diff --git a/tests/baselines/reference/invalidBooleanAssignments.errors.txt b/tests/baselines/reference/invalidBooleanAssignments.errors.txt index 84ced226113..ddedc16f28d 100644 --- a/tests/baselines/reference/invalidBooleanAssignments.errors.txt +++ b/tests/baselines/reference/invalidBooleanAssignments.errors.txt @@ -7,6 +7,7 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(12 tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(15,5): error TS2322: Type 'boolean' is not assignable to type 'I'. Property 'bar' is missing in type 'Boolean'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(17,5): error TS2322: Type 'boolean' is not assignable to type '() => string'. + Signature '(): string' has no corresponding signature in 'Boolean' tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(21,1): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(24,5): error TS2322: Type 'boolean' is not assignable to type 'T'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26,1): error TS2364: Invalid left-hand side of assignment expression. @@ -46,6 +47,7 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26 var h: { (): string } = x; ~ !!! error TS2322: Type 'boolean' is not assignable to type '() => string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in 'Boolean' var h2: { toString(): string } = x; // no error module M { export var a = 1; } diff --git a/tests/baselines/reference/iteratorSpreadInArray9.errors.txt b/tests/baselines/reference/iteratorSpreadInArray9.errors.txt index 90b8bdbeb46..cc32db8a373 100644 --- a/tests/baselines/reference/iteratorSpreadInArray9.errors.txt +++ b/tests/baselines/reference/iteratorSpreadInArray9.errors.txt @@ -1,11 +1,13 @@ tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts(1,17): error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => SymbolIterator' is not assignable to type '() => Iterator'. - Type 'SymbolIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. - Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. - Property 'done' is missing in type '{ value: symbol; }'. + Signature '(): Iterator' has no corresponding signature in '() => SymbolIterator' + Type 'SymbolIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: symbol; }' + Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. + Property 'done' is missing in type '{ value: symbol; }'. ==== tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts (1 errors) ==== @@ -14,11 +16,13 @@ tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts(1,17): error TS2322 !!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => SymbolIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. -!!! error TS2322: Property 'done' is missing in type '{ value: symbol; }'. +!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => SymbolIterator' +!!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: symbol; }' +!!! error TS2322: Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. +!!! error TS2322: Property 'done' is missing in type '{ value: symbol; }'. class SymbolIterator { next() { diff --git a/tests/baselines/reference/lambdaArgCrash.errors.txt b/tests/baselines/reference/lambdaArgCrash.errors.txt index bf1c4dd01bd..658534334f5 100644 --- a/tests/baselines/reference/lambdaArgCrash.errors.txt +++ b/tests/baselines/reference/lambdaArgCrash.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/lambdaArgCrash.ts(27,25): error TS2304: Cannot find name 'ItemSet'. tests/cases/compiler/lambdaArgCrash.ts(29,14): error TS2345: Argument of type '(items: any) => void' is not assignable to parameter of type '() => any'. + Signature '(): any' has no corresponding signature in '(items: any) => void' ==== tests/cases/compiler/lambdaArgCrash.ts (2 errors) ==== @@ -36,6 +37,7 @@ tests/cases/compiler/lambdaArgCrash.ts(29,14): error TS2345: Argument of type '( super.add(listener); ~~~~~~~~ !!! error TS2345: Argument of type '(items: any) => void' is not assignable to parameter of type '() => any'. +!!! error TS2345: Signature '(): any' has no corresponding signature in '(items: any) => void' } diff --git a/tests/baselines/reference/multipleInheritance.errors.txt b/tests/baselines/reference/multipleInheritance.errors.txt index 19ef1e755e3..def2fcbd813 100644 --- a/tests/baselines/reference/multipleInheritance.errors.txt +++ b/tests/baselines/reference/multipleInheritance.errors.txt @@ -3,6 +3,7 @@ tests/cases/compiler/multipleInheritance.ts(18,21): error TS1174: Classes can on tests/cases/compiler/multipleInheritance.ts(34,7): error TS2415: Class 'Baad' incorrectly extends base class 'Good'. Types of property 'g' are incompatible. Type '(n: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(n: number) => number' tests/cases/compiler/multipleInheritance.ts(35,12): error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. @@ -49,6 +50,7 @@ tests/cases/compiler/multipleInheritance.ts(35,12): error TS2425: Class 'Good' d !!! error TS2415: Class 'Baad' incorrectly extends base class 'Good'. !!! error TS2415: Types of property 'g' are incompatible. !!! error TS2415: Type '(n: number) => number' is not assignable to type '() => number'. +!!! error TS2415: Signature '(): number' has no corresponding signature in '(n: number) => number' public f(): number { return 0; } ~ !!! error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. diff --git a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt index c4ee3ea17b2..6bc3ec86f72 100644 --- a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt @@ -1,15 +1,18 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(7,1): error TS2322: Type 'I' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Type 'void' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(14,1): error TS2322: Type 'C' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Type 'void' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(20,1): error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Type 'void' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'string'. ==== tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts (3 errors) ==== @@ -24,7 +27,8 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'I' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'string'. i = o; // ok class C { @@ -36,7 +40,8 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'C' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'string'. c = o; // ok var a = { @@ -47,5 +52,6 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'string'. a = o; // ok \ No newline at end of file diff --git a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt index a88796b390e..174707a8d22 100644 --- a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt +++ b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt @@ -1,23 +1,28 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(7,1): error TS2322: Type 'I' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => number' is not assignable to type '() => string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => number' + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. Types of property 'toString' are incompatible. Type '() => string' is not assignable to type '() => number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(14,1): error TS2322: Type 'C' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => number' is not assignable to type '() => string'. - Type 'number' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => number' + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(15,1): error TS2322: Type 'Object' is not assignable to type 'C'. Types of property 'toString' are incompatible. Type '() => string' is not assignable to type '() => number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(20,1): error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Type 'void' is not assignable to type 'string'. + Signature '(): string' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'string'. ==== tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts (5 errors) ==== @@ -32,13 +37,15 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'I' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => number' +!!! error TS2322: Type 'number' is not assignable to type 'string'. i = o; // error ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2322: Type 'string' is not assignable to type 'number'. class C { toString(): number { return 1; } @@ -49,13 +56,15 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'C' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => number' +!!! error TS2322: Type 'number' is not assignable to type 'string'. c = o; // error ~ !!! error TS2322: Type 'Object' is not assignable to type 'C'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => string' +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a = { toString: () => { } @@ -65,5 +74,6 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'string'. a = o; // ok \ No newline at end of file diff --git a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt index 30b40f431a7..6767d053498 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt @@ -1,5 +1,7 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. + Signature '(): void' has no corresponding signature in 'Object' tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts(14,1): error TS2322: Type 'Object' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in 'Object' ==== tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts (2 errors) ==== @@ -13,6 +15,7 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOf i = f; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' var a: { (): void @@ -20,4 +23,5 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOf f = a; a = f; ~ -!!! error TS2322: Type 'Object' is not assignable to type '() => void'. \ No newline at end of file +!!! error TS2322: Type 'Object' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' \ No newline at end of file diff --git a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt index 0faba936715..92fdf725efe 100644 --- a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt @@ -1,5 +1,7 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. + Signature 'new (): any' has no corresponding signature in 'Object' tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts(14,1): error TS2322: Type 'Object' is not assignable to type 'new () => any'. + Signature 'new (): any' has no corresponding signature in 'Object' ==== tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts (2 errors) ==== @@ -13,6 +15,7 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMemb i = f; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' var a: { new(): any @@ -20,4 +23,5 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMemb f = a; a = f; ~ -!!! error TS2322: Type 'Object' is not assignable to type 'new () => any'. \ No newline at end of file +!!! error TS2322: Type 'Object' is not assignable to type 'new () => any'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' \ No newline at end of file diff --git a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt index 52fb45e40d2..43d7b633052 100644 --- a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt +++ b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt @@ -1,8 +1,10 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. - Types of parameters 'onFulFill' and 'onFulfill' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => any'. - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise' has no corresponding signature in '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' + Types of parameters 'onFulFill' and 'onFulfill' are incompatible. + Type '(value: number) => any' is not assignable to type '(value: string) => any'. + Signature '(value: string): any' has no corresponding signature in '(value: number) => any' + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/optionalFunctionArgAssignability.ts (1 errors) ==== @@ -15,8 +17,10 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Typ a = b; // error because number is not assignable to string ~ !!! error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. -!!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. -!!! error TS2322: Type '(value: number) => any' is not assignable to type '(value: string) => any'. -!!! error TS2322: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Signature '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise' has no corresponding signature in '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' +!!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. +!!! error TS2322: Type '(value: number) => any' is not assignable to type '(value: string) => any'. +!!! error TS2322: Signature '(value: string): any' has no corresponding signature in '(value: number) => any' +!!! error TS2322: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt index de02509d124..4d8f23385fd 100644 --- a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt +++ b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. - Types of parameters 'p1' and 'p1' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(p1: number, p2: string): void' has no corresponding signature in '(p1?: string) => I1' + Types of parameters 'p1' and 'p1' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/optionalParamAssignmentCompat.ts (1 errors) ==== @@ -16,6 +17,7 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type var d: I1 = i2.m1; // should error ~ !!! error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. -!!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(p1: number, p2: string): void' has no corresponding signature in '(p1?: string) => I1' +!!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamTypeComparison.errors.txt b/tests/baselines/reference/optionalParamTypeComparison.errors.txt index 98a07570c65..8e3237a80b1 100644 --- a/tests/baselines/reference/optionalParamTypeComparison.errors.txt +++ b/tests/baselines/reference/optionalParamTypeComparison.errors.txt @@ -1,9 +1,11 @@ tests/cases/compiler/optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. - Types of parameters 'b' and 'n' are incompatible. - Type 'boolean' is not assignable to type 'number'. + Signature '(s: string, n?: number): void' has no corresponding signature in '(s: string, b?: boolean) => void' + Types of parameters 'b' and 'n' are incompatible. + Type 'boolean' is not assignable to type 'number'. tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. - Types of parameters 'n' and 'b' are incompatible. - Type 'number' is not assignable to type 'boolean'. + Signature '(s: string, b?: boolean): void' has no corresponding signature in '(s: string, n?: number) => void' + Types of parameters 'n' and 'b' are incompatible. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/compiler/optionalParamTypeComparison.ts (2 errors) ==== @@ -13,10 +15,12 @@ tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s f = g; ~ !!! error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. -!!! error TS2322: Types of parameters 'b' and 'n' are incompatible. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2322: Signature '(s: string, n?: number): void' has no corresponding signature in '(s: string, b?: boolean) => void' +!!! error TS2322: Types of parameters 'b' and 'n' are incompatible. +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. g = f; ~ !!! error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. -!!! error TS2322: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file +!!! error TS2322: Signature '(s: string, b?: boolean): void' has no corresponding signature in '(s: string, n?: number) => void' +!!! error TS2322: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt index 4870106f474..3b8d8c80e58 100644 --- a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt +++ b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(5,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. Types of property 'addEventListener' are incompatible. Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. + Signature '(x: string): any' has no corresponding signature in '(x: "bar") => string' tests/cases/compiler/overloadOnConstInheritance2.ts(6,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. @@ -14,6 +15,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(6,5): error TS2382: Speciali !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'addEventListener' are incompatible. !!! error TS2430: Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. +!!! error TS2430: Signature '(x: string): any' has no corresponding signature in '(x: "bar") => string' addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. diff --git a/tests/baselines/reference/overloadOnConstInheritance3.errors.txt b/tests/baselines/reference/overloadOnConstInheritance3.errors.txt index b338f9795d7..062db72ac51 100644 --- a/tests/baselines/reference/overloadOnConstInheritance3.errors.txt +++ b/tests/baselines/reference/overloadOnConstInheritance3.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/overloadOnConstInheritance3.ts(4,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. Types of property 'addEventListener' are incompatible. Type '{ (x: "bar"): string; (x: "foo"): string; }' is not assignable to type '(x: string) => any'. + Signature '(x: string): any' has no corresponding signature in '{ (x: "bar"): string; (x: "foo"): string; }' tests/cases/compiler/overloadOnConstInheritance3.ts(6,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/compiler/overloadOnConstInheritance3.ts(7,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. @@ -14,6 +15,7 @@ tests/cases/compiler/overloadOnConstInheritance3.ts(7,5): error TS2382: Speciali !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'addEventListener' are incompatible. !!! error TS2430: Type '{ (x: "bar"): string; (x: "foo"): string; }' is not assignable to type '(x: string) => any'. +!!! error TS2430: Signature '(x: string): any' has no corresponding signature in '{ (x: "bar"): string; (x: "foo"): string; }' // shouldn't need to redeclare the string overload addEventListener(x: 'bar'): string; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt b/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt index 9fc11b681c7..54e43e0b248 100644 --- a/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt +++ b/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt @@ -1,5 +1,6 @@ tests/cases/compiler/overloadResolutionOverCTLambda.ts(2,5): error TS2345: Argument of type '(a: number) => number' is not assignable to parameter of type '(item: number) => boolean'. - Type 'number' is not assignable to type 'boolean'. + Signature '(item: number): boolean' has no corresponding signature in '(a: number) => number' + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/compiler/overloadResolutionOverCTLambda.ts (1 errors) ==== @@ -7,4 +8,5 @@ tests/cases/compiler/overloadResolutionOverCTLambda.ts(2,5): error TS2345: Argum foo(a => a); // can not convert (number)=>bool to (number)=>number ~~~~~~ !!! error TS2345: Argument of type '(a: number) => number' is not assignable to parameter of type '(item: number) => boolean'. -!!! error TS2345: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file +!!! error TS2345: Signature '(item: number): boolean' has no corresponding signature in '(a: number) => number' +!!! error TS2345: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt index 45c9f99b691..9658555f35b 100644 --- a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt +++ b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt @@ -4,9 +4,10 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(14,37): tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,38): error TS2344: Type 'D' does not satisfy the constraint 'A'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(18,27): error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. - Types of parameters 'x' and 'x' are incompatible. - Type 'D' is not assignable to type 'B'. - Property 'x' is missing in type 'D'. + Signature '(x: B): any' has no corresponding signature in '(x: D) => G' + Types of parameters 'x' and 'x' are incompatible. + Type 'D' is not assignable to type 'B'. + Property 'x' is missing in type 'D'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): error TS2344: Type 'D' does not satisfy the constraint 'A'. @@ -48,7 +49,8 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): }); ~ !!! error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'D' is not assignable to type 'B'. -!!! error TS2345: Property 'x' is missing in type 'D'. +!!! error TS2345: Signature '(x: B): any' has no corresponding signature in '(x: D) => G' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'D' is not assignable to type 'B'. +!!! error TS2345: Property 'x' is missing in type 'D'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt index daf057c9ebd..edc11299c9e 100644 --- a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt +++ b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt @@ -1,10 +1,12 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(6,6): error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. - Type '{}' is not assignable to type '{ a: number; b: number; }'. - Property 'a' is missing in type '{}'. + Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => {}' + Type '{}' is not assignable to type '{ a: number; b: number; }'. + Property 'a' is missing in type '{}'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(7,17): error TS2304: Cannot find name 'blah'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,6): error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. - Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. - Property 'b' is missing in type '{ a: any; }'. + Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => { a: any; }' + Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. + Property 'b' is missing in type '{ a: any; }'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cannot find name 'blah'. @@ -17,15 +19,17 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cann func(s => ({})); // Error for no applicable overload (object type is missing a and b) ~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. -!!! error TS2345: Type '{}' is not assignable to type '{ a: number; b: number; }'. -!!! error TS2345: Property 'a' is missing in type '{}'. +!!! error TS2345: Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => {}' +!!! error TS2345: Type '{}' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'a' is missing in type '{}'. func(s => ({ a: blah, b: 3 })); // Only error inside the function, but not outside (since it would be applicable if not for the provisional error) ~~~~ !!! error TS2304: Cannot find name 'blah'. func(s => ({ a: blah })); // Two errors here, one for blah not being defined, and one for the overload since it would not be applicable anyway ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. -!!! error TS2345: Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. -!!! error TS2345: Property 'b' is missing in type '{ a: any; }'. +!!! error TS2345: Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => { a: any; }' +!!! error TS2345: Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'b' is missing in type '{ a: any; }'. ~~~~ !!! error TS2304: Cannot find name 'blah'. \ No newline at end of file diff --git a/tests/baselines/reference/parseTypes.errors.txt b/tests/baselines/reference/parseTypes.errors.txt index baa5aaff738..c141b59e993 100644 --- a/tests/baselines/reference/parseTypes.errors.txt +++ b/tests/baselines/reference/parseTypes.errors.txt @@ -1,8 +1,11 @@ tests/cases/compiler/parseTypes.ts(9,1): error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(s: string) => void' tests/cases/compiler/parseTypes.ts(10,1): error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(s: string) => void' tests/cases/compiler/parseTypes.ts(11,1): error TS2322: Type '(s: string) => void' is not assignable to type '{ [x: number]: number; }'. Index signature is missing in type '(s: string) => void'. tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => void' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in '(s: string) => void' ==== tests/cases/compiler/parseTypes.ts (4 errors) ==== @@ -17,9 +20,11 @@ tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => voi y=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(s: string) => void' x=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '(s: string) => void' w=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '{ [x: number]: number; }'. @@ -27,4 +32,5 @@ tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => voi z=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type 'new () => number'. +!!! error TS2322: Signature 'new (): number' has no corresponding signature in '(s: string) => void' \ No newline at end of file diff --git a/tests/baselines/reference/parser536727.errors.txt b/tests/baselines/reference/parser536727.errors.txt index 4204e62c93b..70841efd89f 100644 --- a/tests/baselines/reference/parser536727.errors.txt +++ b/tests/baselines/reference/parser536727.errors.txt @@ -1,7 +1,9 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(7,5): error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. - Type '(x: string) => string' is not assignable to type 'string'. + Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' + Type '(x: string) => string' is not assignable to type 'string'. tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(8,5): error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. - Type '(x: string) => string' is not assignable to type 'string'. + Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' + Type '(x: string) => string' is not assignable to type 'string'. ==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts (2 errors) ==== @@ -14,9 +16,11 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(8,5): foo(() => g); ~~~~~~~ !!! error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' +!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. foo(x); ~ !!! error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. +!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' +!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt b/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt index ee17b6f82aa..5eebe963b90 100644 --- a/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt +++ b/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt @@ -1,5 +1,7 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. + Signature '(): void' has no corresponding signature in 'Object' tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts(14,1): error TS2322: Type 'Object' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in 'Object' ==== tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts (2 errors) ==== @@ -13,6 +15,7 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAut i = o; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' var a: { (): void @@ -21,4 +24,5 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAut a = o; ~ !!! error TS2322: Type 'Object' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' \ No newline at end of file diff --git a/tests/baselines/reference/promiseChaining1.errors.txt b/tests/baselines/reference/promiseChaining1.errors.txt index bd3e52fcc1c..da593b4086c 100644 --- a/tests/baselines/reference/promiseChaining1.errors.txt +++ b/tests/baselines/reference/promiseChaining1.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/promiseChaining1.ts(7,50): error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. - Type 'string' is not assignable to type 'Function'. - Property 'apply' is missing in type 'String'. + Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' + Type 'string' is not assignable to type 'Function'. + Property 'apply' is missing in type 'String'. ==== tests/cases/compiler/promiseChaining1.ts (1 errors) ==== @@ -13,8 +14,9 @@ tests/cases/compiler/promiseChaining1.ts(7,50): error TS2345: Argument of type ' var z = this.then(x => result)/*S*/.then(x => "abc")/*Function*/.then(x => x.length)/*number*/; // Should error on "abc" because it is not a Function ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. -!!! error TS2345: Type 'string' is not assignable to type 'Function'. -!!! error TS2345: Property 'apply' is missing in type 'String'. +!!! error TS2345: Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Function'. +!!! error TS2345: Property 'apply' is missing in type 'String'. return new Chain2(result); } } \ No newline at end of file diff --git a/tests/baselines/reference/promiseChaining2.errors.txt b/tests/baselines/reference/promiseChaining2.errors.txt index f12baebd4dc..acdaad94bef 100644 --- a/tests/baselines/reference/promiseChaining2.errors.txt +++ b/tests/baselines/reference/promiseChaining2.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/promiseChaining2.ts(7,45): error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. - Type 'string' is not assignable to type 'Function'. - Property 'apply' is missing in type 'String'. + Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' + Type 'string' is not assignable to type 'Function'. + Property 'apply' is missing in type 'String'. ==== tests/cases/compiler/promiseChaining2.ts (1 errors) ==== @@ -13,8 +14,9 @@ tests/cases/compiler/promiseChaining2.ts(7,45): error TS2345: Argument of type ' var z = this.then(x => result).then(x => "abc").then(x => x.length); ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. -!!! error TS2345: Type 'string' is not assignable to type 'Function'. -!!! error TS2345: Property 'apply' is missing in type 'String'. +!!! error TS2345: Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' +!!! error TS2345: Type 'string' is not assignable to type 'Function'. +!!! error TS2345: Property 'apply' is missing in type 'String'. return new Chain2(result); } } \ No newline at end of file diff --git a/tests/baselines/reference/promisePermutations.errors.txt b/tests/baselines/reference/promisePermutations.errors.txt index a74938f5dd9..0787189e2e0 100644 --- a/tests/baselines/reference/promisePermutations.errors.txt +++ b/tests/baselines/reference/promisePermutations.errors.txt @@ -1,50 +1,75 @@ tests/cases/compiler/promisePermutations.ts(74,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations.ts(79,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(84,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(88,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations.ts(93,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations.ts(97,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(102,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(106,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(111,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(117,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(122,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(126,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations.ts(129,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations.ts(134,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations.ts(137,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -55,27 +80,35 @@ tests/cases/compiler/promisePermutations.ts(152,12): error TS2453: The type argu Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(value: string) => IPromise' + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(156,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(158,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. + Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => Promise' + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/promisePermutations.ts (33 errors) ==== @@ -155,9 +188,10 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -165,84 +199,100 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -251,23 +301,28 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // ok @@ -280,12 +335,15 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -317,39 +375,47 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Signature '(value: number): Promise' has no corresponding signature in '(value: string) => IPromise' +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. +!!! error TS2345: Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => Promise' +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok diff --git a/tests/baselines/reference/promisePermutations2.errors.txt b/tests/baselines/reference/promisePermutations2.errors.txt index 8afceeae0fd..054cdec66c9 100644 --- a/tests/baselines/reference/promisePermutations2.errors.txt +++ b/tests/baselines/reference/promisePermutations2.errors.txt @@ -1,50 +1,75 @@ tests/cases/compiler/promisePermutations2.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations2.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations2.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations2.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations2.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations2.ts(96,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(99,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(125,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations2.ts(128,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(131,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations2.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations2.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations2.ts(136,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -55,27 +80,35 @@ tests/cases/compiler/promisePermutations2.ts(151,12): error TS2453: The type arg Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. + Signature '(value: number): any' has no corresponding signature in '(value: string) => IPromise' + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(157,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(158,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. + Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => any' + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/promisePermutations2.ts (33 errors) ==== @@ -154,9 +187,10 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); // Should error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -164,84 +198,100 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -250,23 +300,28 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // error @@ -279,12 +334,15 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -316,39 +374,47 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Signature '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. +!!! error TS2453: Signature '(value: number): any' has no corresponding signature in '(value: string) => IPromise' +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. +!!! error TS2345: Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => any' +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok diff --git a/tests/baselines/reference/promisePermutations3.errors.txt b/tests/baselines/reference/promisePermutations3.errors.txt index b17021a02b9..5d414cf4176 100644 --- a/tests/baselines/reference/promisePermutations3.errors.txt +++ b/tests/baselines/reference/promisePermutations3.errors.txt @@ -1,53 +1,79 @@ tests/cases/compiler/promisePermutations3.ts(68,69): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations3.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. tests/cases/compiler/promisePermutations3.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations3.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations3.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations3.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations3.ts(96,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(99,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. + Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. + Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(125,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations3.ts(128,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(131,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations3.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations3.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. + Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations3.ts(136,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -58,32 +84,42 @@ tests/cases/compiler/promisePermutations3.ts(151,12): error TS2453: The type arg Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. + Signature '(value: number): Promise' has no corresponding signature in '(value: string) => any' + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(157,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(158,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. + Signature '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. + Signature '(value: string): any' has no corresponding signature in '(value: number) => Promise' + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of type '{ (x: T): IPromise; (x: T, y: T): Promise; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise'. - Type 'IPromise' is not assignable to type 'Promise'. - Types of property 'then' are incompatible. - Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Type 'IPromise' is not assignable to type 'Promise'. + Signature '(value: (x: any) => any): Promise' has no corresponding signature in '{ (x: T): IPromise; (x: T, y: T): Promise; }' + Type 'IPromise' is not assignable to type 'Promise'. + Types of property 'then' are incompatible. + Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. + Signature '(success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' + Type 'IPromise' is not assignable to type 'Promise'. ==== tests/cases/compiler/promisePermutations3.ts (35 errors) ==== @@ -157,9 +193,10 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r3b = r3.then(testFunction3, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var s3: Promise; var s3a = s3.then(testFunction3, testFunction3, testFunction3); var s3b = s3.then(testFunction3P, testFunction3P, testFunction3P); @@ -167,8 +204,9 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -176,84 +214,100 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -262,23 +316,28 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // error @@ -291,12 +350,15 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -328,39 +390,47 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Signature '(value: number): Promise' has no corresponding signature in '(value: string) => any' +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. +!!! error TS2345: Signature '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. +!!! error TS2345: Signature '(value: string): any' has no corresponding signature in '(value: number) => Promise' +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok @@ -369,8 +439,10 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s12b = s12.then(testFunction12P, testFunction12P, testFunction12P); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: T): IPromise; (x: T, y: T): Promise; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. +!!! error TS2345: Signature '(value: (x: any) => any): Promise' has no corresponding signature in '{ (x: T): IPromise; (x: T, y: T): Promise; }' +!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. +!!! error TS2345: Signature '(success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' +!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. var s12c = s12.then(testFunction12P, testFunction12, testFunction12); // ok \ No newline at end of file diff --git a/tests/baselines/reference/propertyAssignment.errors.txt b/tests/baselines/reference/propertyAssignment.errors.txt index 47359caf9c2..ae65ed9b73a 100644 --- a/tests/baselines/reference/propertyAssignment.errors.txt +++ b/tests/baselines/reference/propertyAssignment.errors.txt @@ -1,7 +1,9 @@ tests/cases/compiler/propertyAssignment.ts(6,13): error TS1170: A computed property name in a type literal must directly refer to a built-in symbol. tests/cases/compiler/propertyAssignment.ts(6,14): error TS2304: Cannot find name 'index'. tests/cases/compiler/propertyAssignment.ts(14,1): error TS2322: Type '{ x: number; }' is not assignable to type 'new () => any'. + Signature 'new (): any' has no corresponding signature in '{ x: number; }' tests/cases/compiler/propertyAssignment.ts(16,1): error TS2322: Type '{ x: number; }' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in '{ x: number; }' ==== tests/cases/compiler/propertyAssignment.ts (4 errors) ==== @@ -25,7 +27,9 @@ tests/cases/compiler/propertyAssignment.ts(16,1): error TS2322: Type '{ x: numbe foo1 = bar1; // should be an error ~~~~ !!! error TS2322: Type '{ x: number; }' is not assignable to type 'new () => any'. +!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{ x: number; }' foo2 = bar2; foo3 = bar3; // should be an error ~~~~ -!!! error TS2322: Type '{ x: number; }' is not assignable to type '() => void'. \ No newline at end of file +!!! error TS2322: Type '{ x: number; }' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in '{ x: number; }' \ No newline at end of file diff --git a/tests/baselines/reference/qualify.errors.txt b/tests/baselines/reference/qualify.errors.txt index c7679a0a0f8..822b329b757 100644 --- a/tests/baselines/reference/qualify.errors.txt +++ b/tests/baselines/reference/qualify.errors.txt @@ -7,7 +7,9 @@ tests/cases/compiler/qualify.ts(45,13): error TS2322: Type 'I4' is not assignabl tests/cases/compiler/qualify.ts(46,13): error TS2322: Type 'I4' is not assignable to type 'I3[]'. Property 'length' is missing in type 'I4'. tests/cases/compiler/qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => I3'. + Signature '(): I3' has no corresponding signature in 'I4' tests/cases/compiler/qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. + Signature '(k: I3): void' has no corresponding signature in 'I4' tests/cases/compiler/qualify.ts(49,13): error TS2322: Type 'I4' is not assignable to type '{ k: I3; }'. Property 'k' is missing in type 'I4'. tests/cases/compiler/qualify.ts(58,5): error TS2322: Type 'I' is not assignable to type 'T.I'. @@ -76,9 +78,11 @@ tests/cases/compiler/qualify.ts(58,5): error TS2322: Type 'I' is not assignable var v4:()=>K1.I3=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '() => I3'. +!!! error TS2322: Signature '(): I3' has no corresponding signature in 'I4' var v5:(k:K1.I3)=>void=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. +!!! error TS2322: Signature '(k: I3): void' has no corresponding signature in 'I4' var v6:{k:K1.I3;}=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '{ k: I3; }'. diff --git a/tests/baselines/reference/recursiveFunctionTypes.errors.txt b/tests/baselines/reference/recursiveFunctionTypes.errors.txt index 8d5303c0669..9bc82f92ff3 100644 --- a/tests/baselines/reference/recursiveFunctionTypes.errors.txt +++ b/tests/baselines/reference/recursiveFunctionTypes.errors.txt @@ -1,23 +1,30 @@ tests/cases/compiler/recursiveFunctionTypes.ts(1,35): error TS2322: Type 'number' is not assignable to type '() => typeof fn'. + Signature '(): () => typeof fn' has no corresponding signature in 'Number' tests/cases/compiler/recursiveFunctionTypes.ts(3,5): error TS2322: Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. - Type '() => typeof fn' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => typeof fn' + Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(11,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. + Signature '(t: (t: typeof g) => void): void' has no corresponding signature in 'Number' tests/cases/compiler/recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => any'. + Signature '(): () => any' has no corresponding signature in 'Number' tests/cases/compiler/recursiveFunctionTypes.ts(30,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/compiler/recursiveFunctionTypes.ts(33,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. + Signature '(): { (): typeof f6; (a: typeof f6): () => number; }' has no corresponding signature in 'String' tests/cases/compiler/recursiveFunctionTypes.ts(42,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. + Signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' has no corresponding signature in 'String' ==== tests/cases/compiler/recursiveFunctionTypes.ts (13 errors) ==== function fn(): typeof fn { return 1; } ~ !!! error TS2322: Type 'number' is not assignable to type '() => typeof fn'. +!!! error TS2322: Signature '(): () => typeof fn' has no corresponding signature in 'Number' var x: number = fn; // error ~ @@ -25,7 +32,8 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of var y: () => number = fn; // ok ~ !!! error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. -!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => typeof fn' +!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'. var f: () => typeof g; var g: () => typeof f; @@ -52,11 +60,13 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of C.g(3); // error ~ !!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. +!!! error TS2345: Signature '(t: (t: typeof g) => void): void' has no corresponding signature in 'Number' var f4: () => typeof f4; f4 = 3; // error ~~ !!! error TS2322: Type 'number' is not assignable to type '() => any'. +!!! error TS2322: Signature '(): () => any' has no corresponding signature in 'Number' function f5() { return f5; } @@ -72,6 +82,7 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f6(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. +!!! error TS2345: Signature '(): { (): typeof f6; (a: typeof f6): () => number; }' has no corresponding signature in 'String' f6(); // ok declare function f7(): typeof f7; @@ -85,4 +96,5 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f7(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. +!!! error TS2345: Signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' has no corresponding signature in 'String' f7(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/requiredInitializedParameter2.errors.txt b/tests/baselines/reference/requiredInitializedParameter2.errors.txt index 5dcec536e1b..493f9e49f23 100644 --- a/tests/baselines/reference/requiredInitializedParameter2.errors.txt +++ b/tests/baselines/reference/requiredInitializedParameter2.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/requiredInitializedParameter2.ts(5,7): error TS2420: Class 'C1' incorrectly implements interface 'I1'. Types of property 'method' are incompatible. Type '(a: number, b: any) => void' is not assignable to type '() => any'. + Signature '(): any' has no corresponding signature in '(a: number, b: any) => void' ==== tests/cases/compiler/requiredInitializedParameter2.ts (1 errors) ==== @@ -13,5 +14,6 @@ tests/cases/compiler/requiredInitializedParameter2.ts(5,7): error TS2420: Class !!! error TS2420: Class 'C1' incorrectly implements interface 'I1'. !!! error TS2420: Types of property 'method' are incompatible. !!! error TS2420: Type '(a: number, b: any) => void' is not assignable to type '() => any'. +!!! error TS2420: Signature '(): any' has no corresponding signature in '(a: number, b: any) => void' method(a = 0, b) { } } \ No newline at end of file diff --git a/tests/baselines/reference/restArgAssignmentCompat.errors.txt b/tests/baselines/reference/restArgAssignmentCompat.errors.txt index 2ea07395099..cf6c70b58f3 100644 --- a/tests/baselines/reference/restArgAssignmentCompat.errors.txt +++ b/tests/baselines/reference/restArgAssignmentCompat.errors.txt @@ -1,7 +1,8 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'number[]'. - Property 'length' is missing in type 'Number'. + Signature '(x: number[], y: string): void' has no corresponding signature in '(...x: number[]) => void' + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'number[]'. + Property 'length' is missing in type 'Number'. ==== tests/cases/compiler/restArgAssignmentCompat.ts (1 errors) ==== @@ -14,8 +15,9 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: n = f; ~ !!! error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'number[]'. -!!! error TS2322: Property 'length' is missing in type 'Number'. +!!! error TS2322: Signature '(x: number[], y: string): void' has no corresponding signature in '(...x: number[]) => void' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'number[]'. +!!! error TS2322: Property 'length' is missing in type 'Number'. n([4], 'foo'); \ No newline at end of file diff --git a/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt b/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt index db23c2a19f6..f490027f870 100644 --- a/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt +++ b/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticMemberAssignsToConstructorFunctionMembers.ts(7,9): error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. - Type 'void' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'number'. ==== tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticMemberAssignsToConstructorFunctionMembers.ts (1 errors) ==== @@ -12,7 +13,8 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclara C.bar = () => { } // error ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '() => void' +!!! error TS2322: Type 'void' is not assignable to type 'number'. C.bar = (x) => x; // ok C.bar = (x: number) => 1; // ok return 1; diff --git a/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt b/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt index ed6450ad329..aee87f77764 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint02.ts(6,13): error TS2345: Argument of type '(y: "foo" | "bar") => string' is not assignable to parameter of type '(x: "foo") => "foo"'. - Type 'string' is not assignable to type '"foo"'. + Signature '(x: "foo"): "foo"' has no corresponding signature in '(y: "foo" | "bar") => string' + Type 'string' is not assignable to type '"foo"'. ==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint02.ts (1 errors) ==== @@ -11,5 +12,6 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterCon let f = foo((y: "foo" | "bar") => y === "foo" ? y : "foo"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(y: "foo" | "bar") => string' is not assignable to parameter of type '(x: "foo") => "foo"'. -!!! error TS2345: Type 'string' is not assignable to type '"foo"'. +!!! error TS2345: Signature '(x: "foo"): "foo"' has no corresponding signature in '(y: "foo" | "bar") => string' +!!! error TS2345: Type 'string' is not assignable to type '"foo"'. let fResult = f("foo"); \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt index 3821c707f4b..24caddf4849 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesA.ts(2,15): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => number'. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): number' has no corresponding signature in '(x: number) => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesA.ts (1 errors) ==== @@ -7,4 +8,5 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW var r5 = foo3((x: number) => ''); // error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => number'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2345: Signature '(x: number): number' has no corresponding signature in '(x: number) => string' +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt index b5d23da2241..1ae866d4722 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt @@ -1,9 +1,11 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts(19,11): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x: number) => number' is not assignable to type '() => number'. + Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts(49,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. + Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts (2 errors) ==== @@ -30,6 +32,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: number) => number' is not assignable to type '() => number'. +!!! error TS2430: Signature '(): number' has no corresponding signature in '(x: number) => number' a: (x: number) => number; // error, too many required params } @@ -64,6 +67,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. +!!! error TS2430: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' a3: (x: number, y: number) => number; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt index f4a141ff390..aee119d6f73 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt @@ -1,58 +1,69 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(18,11): error TS2430: Interface 'I1C' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' + Types of parameters 'args' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(34,11): error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. - Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' + Types of parameters 'x' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. Types of property 'a2' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(90,11): error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(94,11): error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' + Types of parameters 'z' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(98,11): error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(102,11): error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Types of parameters 'z' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: string[]) => number' + Types of parameters 'z' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(110,11): error TS2430: Interface 'I12' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(118,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(126,11): error TS2430: Interface 'I16' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Types of parameters 'args' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(...args: number[]) => number' + Types of parameters 'args' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts (11 errors) ==== @@ -78,8 +89,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I1C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2430: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' +!!! error TS2430: Types of parameters 'args' and 'args' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a: (...args: string[]) => number; // error, type mismatch } @@ -100,8 +112,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2430: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' +!!! error TS2430: Types of parameters 'x' and 'args' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a: (x?: string) => number; // error, incompatible type } @@ -132,8 +145,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' +!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a2: (x: number, ...args: string[]) => number; // error } @@ -168,8 +182,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: number, y?: number, z?: number) => number; // error } @@ -178,8 +193,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' +!!! error TS2430: Types of parameters 'z' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: number, ...z: number[]) => number; // error } @@ -188,8 +204,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: string, y?: string, z?: string) => number; // error, incompatible types } @@ -198,8 +215,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'z' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: string[]) => number' +!!! error TS2430: Types of parameters 'z' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: number, ...z: string[]) => number; // error } @@ -212,8 +230,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (x?: number, y?: number) => number; // error, type mismatch } @@ -226,8 +245,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (x: number, y?: number) => number; // error, second param has type mismatch } @@ -240,8 +260,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' +!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a4: (x: number, ...args: string[]) => number; // error, rest param has type mismatch } @@ -250,8 +271,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Types of parameters 'args' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(...args: number[]) => number' +!!! error TS2430: Types of parameters 'args' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (...args: number[]) => number; // error } \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt index da742fcd69c..54eec881c14 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithSpecializedSignatures.ts(70,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: string) => string' is not assignable to type '{ (x: "a"): number; (x: string): number; }'. - Type 'string' is not assignable to type 'number'. + Signature '(x: string): number' has no corresponding signature in '(x: string) => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithSpecializedSignatures.ts (1 errors) ==== @@ -79,7 +80,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: string) => string' is not assignable to type '{ (x: "a"): number; (x: string): number; }'. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature '(x: string): number' has no corresponding signature in '(x: string) => string' +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: (x: string) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt index e041b1cdce0..a30feba51c9 100644 --- a/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt @@ -1,9 +1,11 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts(19,11): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type 'new (x: number) => number' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts(49,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. + Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts (2 errors) ==== @@ -30,6 +32,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new () => number'. +!!! error TS2430: Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' a: new (x: number) => number; // error, too many required params } @@ -64,6 +67,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. +!!! error TS2430: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' a3: new (x: number, y: number) => number; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt b/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt index 8a885a2455f..fd9e6faa9ec 100644 --- a/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt +++ b/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithSpecializedSignatures.ts(70,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: string) => string' is not assignable to type '{ new (x: "a"): number; new (x: string): number; }'. - Type 'string' is not assignable to type 'number'. + Signature 'new (x: string): number' has no corresponding signature in 'new (x: string) => string' + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithSpecializedSignatures.ts (1 errors) ==== @@ -79,7 +80,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: string) => string' is not assignable to type '{ new (x: "a"): number; new (x: string): number; }'. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Signature 'new (x: string): number' has no corresponding signature in 'new (x: string) => string' +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: new (x: string) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt index e8f50236cba..316b5713835 100644 --- a/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt @@ -1,21 +1,27 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(20,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(50,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(108,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(138,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(196,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. + Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(226,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. + Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -43,6 +49,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. +!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; // error, too many required params } @@ -77,6 +84,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. +!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; // error, too many required params } @@ -139,6 +147,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. +!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; } @@ -173,6 +182,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. +!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; } @@ -235,6 +245,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. +!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T } @@ -269,6 +280,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. +!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt index 27066058238..66dd34f9cb6 100644 --- a/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt @@ -1,21 +1,27 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(20,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. + Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(50,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. + Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(108,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. + Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(138,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. + Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(196,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. + Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(226,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. + Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -43,6 +49,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. +!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; // error, too many required params } @@ -77,6 +84,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. +!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; // error, too many required params } @@ -139,6 +147,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. +!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; } @@ -173,6 +182,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. +!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; } @@ -235,6 +245,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. +!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T } @@ -269,6 +280,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. +!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; // error, too many required params } diff --git a/tests/baselines/reference/symbolProperty24.errors.txt b/tests/baselines/reference/symbolProperty24.errors.txt index 25cba184e25..58ff17544f9 100644 --- a/tests/baselines/reference/symbolProperty24.errors.txt +++ b/tests/baselines/reference/symbolProperty24.errors.txt @@ -1,7 +1,8 @@ tests/cases/conformance/es6/Symbols/symbolProperty24.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'I'. Types of property '[Symbol.toPrimitive]' are incompatible. Type '() => string' is not assignable to type '() => boolean'. - Type 'string' is not assignable to type 'boolean'. + Signature '(): boolean' has no corresponding signature in '() => string' + Type 'string' is not assignable to type 'boolean'. ==== tests/cases/conformance/es6/Symbols/symbolProperty24.ts (1 errors) ==== @@ -14,7 +15,8 @@ tests/cases/conformance/es6/Symbols/symbolProperty24.ts(5,7): error TS2420: Clas !!! error TS2420: Class 'C' incorrectly implements interface 'I'. !!! error TS2420: Types of property '[Symbol.toPrimitive]' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => boolean'. -!!! error TS2420: Type 'string' is not assignable to type 'boolean'. +!!! error TS2420: Signature '(): boolean' has no corresponding signature in '() => string' +!!! error TS2420: Type 'string' is not assignable to type 'boolean'. [Symbol.toPrimitive]() { return ""; } diff --git a/tests/baselines/reference/targetTypeVoidFunc.errors.txt b/tests/baselines/reference/targetTypeVoidFunc.errors.txt index f9434c1d630..daa25885729 100644 --- a/tests/baselines/reference/targetTypeVoidFunc.errors.txt +++ b/tests/baselines/reference/targetTypeVoidFunc.errors.txt @@ -1,4 +1,5 @@ tests/cases/compiler/targetTypeVoidFunc.ts(2,12): error TS2322: Type '() => void' is not assignable to type 'new () => number'. + Signature 'new (): number' has no corresponding signature in '() => void' ==== tests/cases/compiler/targetTypeVoidFunc.ts (1 errors) ==== @@ -6,6 +7,7 @@ tests/cases/compiler/targetTypeVoidFunc.ts(2,12): error TS2322: Type '() => void return function () { return; } ~~~~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'new () => number'. +!!! error TS2322: Signature 'new (): number' has no corresponding signature in '() => void' }; var x = f1(); diff --git a/tests/baselines/reference/tupleTypes.errors.txt b/tests/baselines/reference/tupleTypes.errors.txt index 8f418f98157..c1ef7f59454 100644 --- a/tests/baselines/reference/tupleTypes.errors.txt +++ b/tests/baselines/reference/tupleTypes.errors.txt @@ -10,13 +10,15 @@ tests/cases/compiler/tupleTypes.ts(41,1): error TS2322: Type 'undefined[]' is no tests/cases/compiler/tupleTypes.ts(47,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | string' + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/tupleTypes.ts(49,1): error TS2322: Type '[number, {}]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | {}' is not assignable to type '() => number'. - Type 'number | {}' is not assignable to type 'number'. - Type '{}' is not assignable to type 'number'. + Signature '(): number' has no corresponding signature in '() => number | {}' + Type 'number | {}' is not assignable to type 'number'. + Type '{}' is not assignable to type 'number'. tests/cases/compiler/tupleTypes.ts(50,1): error TS2322: Type '[number, number]' is not assignable to type '[number, string]'. Types of property '1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -91,16 +93,18 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n !!! error TS2322: Type '[number, string]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a2; a = a3; // Error ~ !!! error TS2322: Type '[number, {}]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | {}' is not assignable to type '() => number'. -!!! error TS2322: Type 'number | {}' is not assignable to type 'number'. -!!! error TS2322: Type '{}' is not assignable to type 'number'. +!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | {}' +!!! error TS2322: Type 'number | {}' is not assignable to type 'number'. +!!! error TS2322: Type '{}' is not assignable to type 'number'. a1 = a2; // Error ~~ !!! error TS2322: Type '[number, number]' is not assignable to type '[number, string]'. diff --git a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt index d058426b9c9..ecfb70a7776 100644 --- a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt @@ -1,14 +1,17 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(25,35): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(51,19): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(61,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(71,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(81,45): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(b: number): number' has no corresponding signature in '(n: string) => string' + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(106,15): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(118,9): error TS2304: Cannot find name 'Window'. @@ -89,8 +92,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -103,8 +107,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics5(null, null); // Generic call with multiple arguments of function types that each have parameters of the same generic type @@ -117,8 +122,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt index 9bd25dda4e6..dd9e29b7c31 100644 --- a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt @@ -1,13 +1,16 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(3,31): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(7,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(11,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(15,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(b: number): number' has no corresponding signature in '(n: string) => string' + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts (4 errors) ==== @@ -22,22 +25,25 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(n: T, f: (x: U) => void) { } someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. // Generic call with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(a: (a: A) => A, b: (b: A) => A, c: (c: A) => A) { } someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt index eb74ff0ade0..e949a0a2fd8 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt @@ -1,6 +1,7 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpression2.ts(6,5): error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. - Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. - Property 'prop' is missing in type '(Anonymous class)'. + Signature 'new (): foo<{}>.(Anonymous class)' has no corresponding signature in 'typeof (Anonymous class)' + Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. + Property 'prop' is missing in type '(Anonymous class)'. ==== tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpression2.ts (1 errors) ==== @@ -12,5 +13,6 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpre foo(class { static prop = "hello" }).length; ~~~~~ !!! error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. -!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. -!!! error TS2345: Property 'prop' is missing in type '(Anonymous class)'. \ No newline at end of file +!!! error TS2345: Signature 'new (): foo<{}>.(Anonymous class)' has no corresponding signature in 'typeof (Anonymous class)' +!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. +!!! error TS2345: Property 'prop' is missing in type '(Anonymous class)'. \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt index 0c1e8cc4e97..3f0390ec46a 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt @@ -4,15 +4,18 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(32,34): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(34,15): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(41,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(48,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(x: number): void' has no corresponding signature in '(x: string) => string' + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(49,15): error TS2344: Type 'string' does not satisfy the constraint 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(55,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Signature '(b: number): number' has no corresponding signature in '(n: string) => string' + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(66,31): error TS2345: Argument of type '(a: (a: A) => A, b: (b: B) => B, c: (c: C) => C) => void' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(73,11): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. @@ -80,8 +83,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -91,8 +95,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics5(null, null); // Error ~~~~~~ !!! error TS2344: Type 'string' does not satisfy the constraint 'number'. @@ -104,8 +109,9 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt index 92d9d21f0cc..fb17775bc31 100644 --- a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt +++ b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt @@ -14,14 +14,18 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(60,7): tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(65,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(70,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(75,46): error TS2345: Argument of type '(p1: any) => p1 is C' is not assignable to parameter of type '(p1: any) => p1 is B'. - Type predicate 'p1 is C' is not assignable to 'p1 is B'. - Type 'C' is not assignable to type 'B'. + Signature '(p1: any): p1 is B' has no corresponding signature in '(p1: any) => p1 is C' + Type predicate 'p1 is C' is not assignable to 'p1 is B'. + Type 'C' is not assignable to type 'B'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(79,1): error TS2322: Type '(p1: any, p2: any) => boolean' is not assignable to type '(p1: any, p2: any) => p1 is A'. - Signature '(p1: any, p2: any): boolean' must have a type predicate. + Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => boolean' + Signature '(p1: any, p2: any): boolean' must have a type predicate. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(85,1): error TS2322: Type '(p1: any, p2: any) => p2 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. - Type predicate 'p2 is A' is not assignable to 'p1 is A'. - Parameter 'p2' is not in the same position as parameter 'p1'. + Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => p2 is A' + Type predicate 'p2 is A' is not assignable to 'p1 is A'. + Parameter 'p2' is not in the same position as parameter 'p1'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(91,1): error TS2322: Type '(p1: any, p2: any, p3: any) => p1 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. + Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any, p3: any) => p1 is A' tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(96,9): error TS1228: A type predicate is only allowed in return type position for functions and methods. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(97,16): error TS1228: A type predicate is only allowed in return type position for functions and methods. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(98,20): error TS1228: A type predicate is only allowed in return type position for functions and methods. @@ -147,15 +151,17 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 acceptingDifferentSignatureTypeGuardFunction(isC); ~~~ !!! error TS2345: Argument of type '(p1: any) => p1 is C' is not assignable to parameter of type '(p1: any) => p1 is B'. -!!! error TS2345: Type predicate 'p1 is C' is not assignable to 'p1 is B'. -!!! error TS2345: Type 'C' is not assignable to type 'B'. +!!! error TS2345: Signature '(p1: any): p1 is B' has no corresponding signature in '(p1: any) => p1 is C' +!!! error TS2345: Type predicate 'p1 is C' is not assignable to 'p1 is B'. +!!! error TS2345: Type 'C' is not assignable to type 'B'. // Boolean not assignable to type guard var assign1: (p1, p2) => p1 is A; assign1 = function(p1, p2): boolean { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any) => boolean' is not assignable to type '(p1: any, p2: any) => p1 is A'. -!!! error TS2322: Signature '(p1: any, p2: any): boolean' must have a type predicate. +!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => boolean' +!!! error TS2322: Signature '(p1: any, p2: any): boolean' must have a type predicate. return true; }; @@ -164,8 +170,9 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 assign2 = function(p1, p2): p2 is A { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any) => p2 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. -!!! error TS2322: Type predicate 'p2 is A' is not assignable to 'p1 is A'. -!!! error TS2322: Parameter 'p2' is not in the same position as parameter 'p1'. +!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => p2 is A' +!!! error TS2322: Type predicate 'p2 is A' is not assignable to 'p1 is A'. +!!! error TS2322: Parameter 'p2' is not in the same position as parameter 'p1'. return true; }; @@ -174,6 +181,7 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 assign3 = function(p1, p2, p3): p1 is A { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any, p3: any) => p1 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. +!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any, p3: any) => p1 is A' return true; }; diff --git a/tests/baselines/reference/typeName1.errors.txt b/tests/baselines/reference/typeName1.errors.txt index 84c8be360bd..e77e7c58535 100644 --- a/tests/baselines/reference/typeName1.errors.txt +++ b/tests/baselines/reference/typeName1.errors.txt @@ -3,6 +3,7 @@ tests/cases/compiler/typeName1.ts(9,5): error TS2322: Type 'number' is not assig tests/cases/compiler/typeName1.ts(10,5): error TS2322: Type 'number' is not assignable to type '{ f(s: string): number; }'. Property 'f' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(11,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. + Signature '(s: string): number' has no corresponding signature in 'Number' tests/cases/compiler/typeName1.ts(12,5): error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. Property 'x' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -10,6 +11,7 @@ tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assi tests/cases/compiler/typeName1.ts(14,5): error TS2322: Type 'number' is not assignable to type '{ z: number; f: { (n: number): string; (s: string): number; }; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(15,5): error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. + Signature '(s: string): boolean' has no corresponding signature in 'Number' tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. @@ -49,6 +51,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x3:{ (s:string):number;(n:number):string; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. +!!! error TS2322: Signature '(s: string): number' has no corresponding signature in 'Number' var x4:{ x;y;z:number;f(n:number):string;f(s:string):number; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -64,6 +67,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x7:(s:string)=>boolean=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. +!!! error TS2322: Signature '(s: string): boolean' has no corresponding signature in 'Number' var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt index f47266f2850..789820116ba 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt @@ -1,9 +1,11 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. - Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'number'. + Signature '(item: number): boolean' has no corresponding signature in '(item: T) => boolean' + Types of parameters 'item' and 'item' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. - Types of parameters 'item' and 'item' are incompatible. - Type 'number' is not assignable to type 'T'. + Signature '(item: T): boolean' has no corresponding signature in '(item: number) => boolean' + Types of parameters 'item' and 'item' are incompatible. + Type 'number' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence.ts (2 errors) ==== @@ -13,12 +15,14 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Typ x = y; // Should be an error ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'number'. +!!! error TS2322: Signature '(item: number): boolean' has no corresponding signature in '(item: T) => boolean' +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'T' is not assignable to type 'number'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'T'. +!!! error TS2322: Signature '(item: T): boolean' has no corresponding signature in '(item: number) => boolean' +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt index 2aa8d77ba6d..a50fd533ae6 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt @@ -1,9 +1,11 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. - Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'U'. + Signature '(item: U): boolean' has no corresponding signature in '(item: T) => boolean' + Types of parameters 'item' and 'item' are incompatible. + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. - Types of parameters 'item' and 'item' are incompatible. - Type 'U' is not assignable to type 'T'. + Signature '(item: T): boolean' has no corresponding signature in '(item: U) => boolean' + Types of parameters 'item' and 'item' are incompatible. + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence2.ts (2 errors) ==== @@ -13,12 +15,14 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Signature '(item: U): boolean' has no corresponding signature in '(item: T) => boolean' +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Signature '(item: T): boolean' has no corresponding signature in '(item: U) => boolean' +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt index 1f126d7c00d..50e33c7afa4 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt @@ -1,7 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence3.ts(4,5): error TS2322: Type '(item: any) => boolean' is not assignable to type '(item: any) => T'. - Type 'boolean' is not assignable to type 'T'. + Signature '(item: any): T' has no corresponding signature in '(item: any) => boolean' + Type 'boolean' is not assignable to type 'T'. tests/cases/compiler/typeParameterArgumentEquivalence3.ts(5,5): error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => boolean'. - Type 'T' is not assignable to type 'boolean'. + Signature '(item: any): boolean' has no corresponding signature in '(item: any) => T' + Type 'T' is not assignable to type 'boolean'. ==== tests/cases/compiler/typeParameterArgumentEquivalence3.ts (2 errors) ==== @@ -11,10 +13,12 @@ tests/cases/compiler/typeParameterArgumentEquivalence3.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: any) => boolean' is not assignable to type '(item: any) => T'. -!!! error TS2322: Type 'boolean' is not assignable to type 'T'. +!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => boolean' +!!! error TS2322: Type 'boolean' is not assignable to type 'T'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => boolean'. -!!! error TS2322: Type 'T' is not assignable to type 'boolean'. +!!! error TS2322: Signature '(item: any): boolean' has no corresponding signature in '(item: any) => T' +!!! error TS2322: Type 'T' is not assignable to type 'boolean'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt index c7b19e8725c..68ab8dc28df 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt @@ -1,7 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence4.ts(4,5): error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. - Type 'T' is not assignable to type 'U'. + Signature '(item: any): U' has no corresponding signature in '(item: any) => T' + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence4.ts(5,5): error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. - Type 'U' is not assignable to type 'T'. + Signature '(item: any): T' has no corresponding signature in '(item: any) => U' + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence4.ts (2 errors) ==== @@ -11,10 +13,12 @@ tests/cases/compiler/typeParameterArgumentEquivalence4.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Signature '(item: any): U' has no corresponding signature in '(item: any) => T' +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => U' +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt index 82290733a9e..8e1ac388a82 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt @@ -1,9 +1,13 @@ tests/cases/compiler/typeParameterArgumentEquivalence5.ts(4,5): error TS2322: Type '() => (item: any) => T' is not assignable to type '() => (item: any) => U'. - Type '(item: any) => T' is not assignable to type '(item: any) => U'. - Type 'T' is not assignable to type 'U'. + Signature '(): (item: any) => U' has no corresponding signature in '() => (item: any) => T' + Type '(item: any) => T' is not assignable to type '(item: any) => U'. + Signature '(item: any): U' has no corresponding signature in '(item: any) => T' + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence5.ts(5,5): error TS2322: Type '() => (item: any) => U' is not assignable to type '() => (item: any) => T'. - Type '(item: any) => U' is not assignable to type '(item: any) => T'. - Type 'U' is not assignable to type 'T'. + Signature '(): (item: any) => T' has no corresponding signature in '() => (item: any) => U' + Type '(item: any) => U' is not assignable to type '(item: any) => T'. + Signature '(item: any): T' has no corresponding signature in '(item: any) => U' + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence5.ts (2 errors) ==== @@ -13,12 +17,16 @@ tests/cases/compiler/typeParameterArgumentEquivalence5.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '() => (item: any) => T' is not assignable to type '() => (item: any) => U'. -!!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Signature '(): (item: any) => U' has no corresponding signature in '() => (item: any) => T' +!!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. +!!! error TS2322: Signature '(item: any): U' has no corresponding signature in '(item: any) => T' +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '() => (item: any) => U' is not assignable to type '() => (item: any) => T'. -!!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Signature '(): (item: any) => T' has no corresponding signature in '() => (item: any) => U' +!!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. +!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => U' +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt index 5a6047222ee..8d926a14378 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts(7,25): error TS2345: Argument of type '(x: A) => A' is not assignable to parameter of type '(x: A) => B'. - Type 'A' is not assignable to type 'B'. - Property 'b' is missing in type 'A'. + Signature '(x: A): B' has no corresponding signature in '(x: A) => A' + Type 'A' is not assignable to type 'B'. + Property 'b' is missing in type 'A'. ==== tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts (1 errors) ==== @@ -13,5 +14,6 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts(7,25): var d = f(a, b, x => x, x => x); // A => A not assignable to A => B ~~~~~~ !!! error TS2345: Argument of type '(x: A) => A' is not assignable to parameter of type '(x: A) => B'. -!!! error TS2345: Type 'A' is not assignable to type 'B'. -!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file +!!! error TS2345: Signature '(x: A): B' has no corresponding signature in '(x: A) => A' +!!! error TS2345: Type 'A' is not assignable to type 'B'. +!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt index cd0801f7ba9..c93aa87f44b 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts(7,29): error TS2345: Argument of type '(t2: A) => A' is not assignable to parameter of type '(t2: A) => B'. - Type 'A' is not assignable to type 'B'. - Property 'b' is missing in type 'A'. + Signature '(t2: A): B' has no corresponding signature in '(t2: A) => A' + Type 'A' is not assignable to type 'B'. + Property 'b' is missing in type 'A'. ==== tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts (1 errors) ==== @@ -13,5 +14,6 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts(7,29): var d = f(a, b, u2 => u2.b, t2 => t2); ~~~~~~~~ !!! error TS2345: Argument of type '(t2: A) => A' is not assignable to parameter of type '(t2: A) => B'. -!!! error TS2345: Type 'A' is not assignable to type 'B'. -!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file +!!! error TS2345: Signature '(t2: A): B' has no corresponding signature in '(t2: A) => A' +!!! error TS2345: Type 'A' is not assignable to type 'B'. +!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file diff --git a/tests/baselines/reference/typesWithPrivateConstructor.errors.txt b/tests/baselines/reference/typesWithPrivateConstructor.errors.txt index 2440e51cd39..d2a4e766ebc 100644 --- a/tests/baselines/reference/typesWithPrivateConstructor.errors.txt +++ b/tests/baselines/reference/typesWithPrivateConstructor.errors.txt @@ -1,5 +1,6 @@ tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(4,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(8,5): error TS2322: Type 'Function' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in 'Function' tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(11,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(12,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(15,10): error TS2346: Supplied parameters do not match any signature of call target. @@ -18,6 +19,7 @@ tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(15,10): err var r: () => void = c.constructor; ~ !!! error TS2322: Type 'Function' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Function' class C2 { private constructor(x: number); diff --git a/tests/baselines/reference/typesWithPublicConstructor.errors.txt b/tests/baselines/reference/typesWithPublicConstructor.errors.txt index a3d66c3520a..6aa06afcdab 100644 --- a/tests/baselines/reference/typesWithPublicConstructor.errors.txt +++ b/tests/baselines/reference/typesWithPublicConstructor.errors.txt @@ -1,4 +1,5 @@ tests/cases/conformance/types/members/typesWithPublicConstructor.ts(8,5): error TS2322: Type 'Function' is not assignable to type '() => void'. + Signature '(): void' has no corresponding signature in 'Function' tests/cases/conformance/types/members/typesWithPublicConstructor.ts(15,10): error TS2346: Supplied parameters do not match any signature of call target. @@ -13,6 +14,7 @@ tests/cases/conformance/types/members/typesWithPublicConstructor.ts(15,10): erro var r: () => void = c.constructor; ~ !!! error TS2322: Type 'Function' is not assignable to type '() => void'. +!!! error TS2322: Signature '(): void' has no corresponding signature in 'Function' class C2 { public constructor(x: number); diff --git a/tests/baselines/reference/undeclaredModuleError.errors.txt b/tests/baselines/reference/undeclaredModuleError.errors.txt index 74e36318595..3c1f930856c 100644 --- a/tests/baselines/reference/undeclaredModuleError.errors.txt +++ b/tests/baselines/reference/undeclaredModuleError.errors.txt @@ -1,6 +1,7 @@ tests/cases/compiler/undeclaredModuleError.ts(1,21): error TS2307: Cannot find module 'fs'. tests/cases/compiler/undeclaredModuleError.ts(8,29): error TS2345: Argument of type '() => void' is not assignable to parameter of type '(stat: any, name: string) => boolean'. - Type 'void' is not assignable to type 'boolean'. + Signature '(stat: any, name: string): boolean' has no corresponding signature in '() => void' + Type 'void' is not assignable to type 'boolean'. tests/cases/compiler/undeclaredModuleError.ts(11,41): error TS2304: Cannot find name 'IDoNotExist'. @@ -19,7 +20,8 @@ tests/cases/compiler/undeclaredModuleError.ts(11,41): error TS2304: Cannot find } , (error: Error, files: {}[]) => { ~~~~~~~~~ !!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '(stat: any, name: string) => boolean'. -!!! error TS2345: Type 'void' is not assignable to type 'boolean'. +!!! error TS2345: Signature '(stat: any, name: string): boolean' has no corresponding signature in '() => void' +!!! error TS2345: Type 'void' is not assignable to type 'boolean'. files.forEach((file) => { var fullPath = join(IDoNotExist); ~~~~~~~~~~~ From f42841c846b4d8acb510ea4c8ef3b89b0d8390de Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 25 Nov 2015 10:29:13 -0800 Subject: [PATCH 039/265] Only report errors from the first failure Accept the new baselines based on this change. Gets rid of a lot of redundant errors. --- src/compiler/checker.ts | 2 +- ...addMoreOverloadsToBaseSignature.errors.txt | 2 - .../arityAndOrderCompatibility01.errors.txt | 20 +- ...teralExpressionContextualTyping.errors.txt | 10 +- .../reference/arrayLiterals3.errors.txt | 28 +- .../asOperatorContextualType.errors.txt | 6 +- .../assignFromBooleanInterface2.errors.txt | 6 +- ...nmentCompatBetweenTupleAndArray.errors.txt | 10 +- .../reference/assignmentCompatBug5.errors.txt | 16 +- ...ignmentCompatWithCallSignatures.errors.txt | 80 +++--- ...gnmentCompatWithCallSignatures2.errors.txt | 40 ++- ...gnmentCompatWithCallSignatures4.errors.txt | 38 ++- ...ignaturesWithOptionalParameters.errors.txt | 14 - ...allSignaturesWithRestParameters.errors.txt | 90 +++---- ...tCompatWithConstructSignatures4.errors.txt | 86 +++---- ...ignaturesWithOptionalParameters.errors.txt | 10 - ...ignaturesWithOptionalParameters.errors.txt | 12 - .../assignmentCompatWithOverloads.errors.txt | 32 +-- .../asyncFunctionDeclaration15_es6.errors.txt | 20 +- .../reference/booleanAssignment.errors.txt | 18 +- ...atureAssignabilityInInheritance.errors.txt | 6 +- ...tureAssignabilityInInheritance3.errors.txt | 38 ++- .../reference/castingTuple.errors.txt | 10 +- ...ConstrainedToOtherTypeParameter.errors.txt | 10 +- ...onstrainedToOtherTypeParameter2.errors.txt | 12 +- .../classSideInheritance3.errors.txt | 4 - ...onalOperatorWithoutIdenticalBCT.errors.txt | 18 +- ...atureAssignabilityInInheritance.errors.txt | 6 +- ...tureAssignabilityInInheritance3.errors.txt | 38 ++- .../contextualTypeWithTuple.errors.txt | 24 +- ...lTypeWithUnionTypeObjectLiteral.errors.txt | 10 +- .../reference/contextualTyping24.errors.txt | 14 +- .../reference/contextualTyping39.errors.txt | 6 +- .../reference/contextualTyping41.errors.txt | 6 +- ...lTypingOfConditionalExpression2.errors.txt | 14 +- ...fGenericFunctionTypedArguments1.errors.txt | 16 +- .../derivedClassTransitivity.errors.txt | 10 +- .../derivedClassTransitivity2.errors.txt | 10 +- .../derivedClassTransitivity3.errors.txt | 10 +- .../derivedClassTransitivity4.errors.txt | 10 +- .../derivedInterfaceCallSignature.errors.txt | 2 - ...tructuringParameterDeclaration2.errors.txt | 32 +-- .../reference/errorElaboration.errors.txt | 14 +- ...orOnContextuallyTypedReturnType.errors.txt | 6 +- ...AnnotationAndInvalidInitializer.errors.txt | 42 ++- ...endAndImplementTheSameBaseType2.errors.txt | 6 +- ...fixingTypeParametersRepeatedly2.errors.txt | 16 +- tests/baselines/reference/for-of30.errors.txt | 18 +- tests/baselines/reference/for-of31.errors.txt | 24 +- ...functionConstraintSatisfaction2.errors.txt | 12 +- ...tionExpressionContextualTyping2.errors.txt | 6 +- ...ctionSignatureAssignmentCompat1.errors.txt | 10 +- .../reference/generatorTypeCheck25.errors.txt | 46 ++-- .../reference/generatorTypeCheck8.errors.txt | 10 +- ...AssignmentCompatWithInterfaces1.errors.txt | 10 +- ...edMethodWithOverloadedArguments.errors.txt | 40 ++- ...lWithConstructorTypedArguments5.errors.txt | 4 - ...lWithGenericSignatureArguments2.errors.txt | 38 ++- ...lWithGenericSignatureArguments3.errors.txt | 6 +- ...oadedConstructorTypedArguments2.errors.txt | 2 - ...erloadedFunctionTypedArguments2.errors.txt | 2 - .../genericCallWithTupleType.errors.txt | 14 +- .../reference/genericCombinators2.errors.txt | 16 +- .../genericSpecializations3.errors.txt | 30 +-- .../genericTypeAssertions2.errors.txt | 10 +- ...cTypeWithNonGenericBaseMisMatch.errors.txt | 40 ++- .../baselines/reference/generics4.errors.txt | 6 +- ...ementGenericWithMismatchedTypes.errors.txt | 16 +- .../reference/incompatibleTypes.errors.txt | 24 +- .../reference/inheritance.errors.txt | 2 - ...nheritedModuleMembersForClodule.errors.txt | 6 +- ...ceMemberAssignsToClassPrototype.errors.txt | 6 +- .../reference/intTypeCheck.errors.txt | 6 +- .../interfaceAssignmentCompat.errors.txt | 14 +- .../interfaceImplementation7.errors.txt | 10 +- .../iteratorSpreadInArray9.errors.txt | 24 +- .../reference/lambdaArgCrash.errors.txt | 2 - .../reference/multipleInheritance.errors.txt | 2 - ...MembersOfObjectAssignmentCompat.errors.txt | 18 +- ...embersOfObjectAssignmentCompat2.errors.txt | 30 +-- ...ptionalFunctionArgAssignability.errors.txt | 20 +- .../optionalParamAssignmentCompat.errors.txt | 10 +- .../optionalParamTypeComparison.errors.txt | 20 +- .../overloadResolutionOverCTLambda.errors.txt | 6 +- ...nWithConstraintCheckingDeferred.errors.txt | 14 +- .../overloadsWithProvisionalErrors.errors.txt | 20 +- .../baselines/reference/parseTypes.errors.txt | 4 - .../reference/parser536727.errors.txt | 12 +- .../reference/promiseChaining1.errors.txt | 10 +- .../reference/promiseChaining2.errors.txt | 10 +- .../reference/promisePermutations.errors.txt | 210 ++++++--------- .../reference/promisePermutations2.errors.txt | 210 ++++++--------- .../reference/promisePermutations3.errors.txt | 240 ++++++------------ .../recursiveFunctionTypes.errors.txt | 6 +- .../requiredInitializedParameter2.errors.txt | 2 - .../restArgAssignmentCompat.errors.txt | 14 +- ...gnsToConstructorFunctionMembers.errors.txt | 6 +- ...ypesAsTypeParameterConstraint02.errors.txt | 6 +- .../subtypingWithCallSignaturesA.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 4 - ...allSignaturesWithRestParameters.errors.txt | 110 ++++---- ...aturesWithSpecializedSignatures.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 4 - ...aturesWithSpecializedSignatures.errors.txt | 6 +- ...ignaturesWithOptionalParameters.errors.txt | 12 - ...ignaturesWithOptionalParameters.errors.txt | 12 - .../reference/symbolProperty24.errors.txt | 6 +- .../baselines/reference/tupleTypes.errors.txt | 20 +- ...entInferenceConstructSignatures.errors.txt | 30 +-- .../typeArgumentInferenceErrors.errors.txt | 30 +-- ...ntInferenceWithClassExpression2.errors.txt | 10 +- ...rgumentInferenceWithConstraints.errors.txt | 30 +-- .../typeGuardFunctionErrors.errors.txt | 28 +- ...ypeParameterArgumentEquivalence.errors.txt | 20 +- ...peParameterArgumentEquivalence2.errors.txt | 20 +- ...peParameterArgumentEquivalence3.errors.txt | 12 +- ...peParameterArgumentEquivalence4.errors.txt | 12 +- ...peParameterArgumentEquivalence5.errors.txt | 24 +- ...gWithContextSensitiveArguments2.errors.txt | 10 +- ...gWithContextSensitiveArguments3.errors.txt | 10 +- .../undeclaredModuleError.errors.txt | 6 +- 121 files changed, 987 insertions(+), 1695 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 81e1a14bdf6..d490004ae76 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5453,7 +5453,7 @@ namespace ts { localErrors = false; } } - if (reportErrors) { + if (localErrors) { reportError(Diagnostics.Signature_0_has_no_corresponding_signature_in_1, signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind), typeToString(source)); diff --git a/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt b/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt index be20b673287..4b6255688f8 100644 --- a/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt +++ b/tests/baselines/reference/addMoreOverloadsToBaseSignature.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/addMoreOverloadsToBaseSignature.ts(5,11): error TS2430: Interface 'Bar' incorrectly extends interface 'Foo'. Types of property 'f' are incompatible. Type '(key: string) => string' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '(key: string) => string' ==== tests/cases/compiler/addMoreOverloadsToBaseSignature.ts (1 errors) ==== @@ -14,7 +13,6 @@ tests/cases/compiler/addMoreOverloadsToBaseSignature.ts(5,11): error TS2430: Int !!! error TS2430: Interface 'Bar' incorrectly extends interface 'Foo'. !!! error TS2430: Types of property 'f' are incompatible. !!! error TS2430: Type '(key: string) => string' is not assignable to type '() => string'. -!!! error TS2430: Signature '(): string' has no corresponding signature in '(key: string) => string' f(key: string): string; } \ No newline at end of file diff --git a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt index a766bab8a96..d60f0b7d03c 100644 --- a/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt +++ b/tests/baselines/reference/arityAndOrderCompatibility01.errors.txt @@ -29,15 +29,13 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(24,5): error tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(25,5): error TS2322: Type '[string, number]' is not assignable to type '[string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => string | number' - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(26,5): error TS2322: Type 'StrNum' is not assignable to type '[string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => string | number' - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(27,5): error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. Property 'length' is missing in type '{ 0: string; 1: number; }'. tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(28,5): error TS2322: Type '[string, number]' is not assignable to type '[number, string]'. @@ -122,17 +120,15 @@ tests/cases/conformance/types/tuple/arityAndOrderCompatibility01.ts(30,5): error !!! error TS2322: Type '[string, number]' is not assignable to type '[string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var m2: [string] = y; ~~ !!! error TS2322: Type 'StrNum' is not assignable to type '[string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var m3: [string] = z; ~~ !!! error TS2322: Type '{ 0: string; 1: number; }' is not assignable to type '[string]'. diff --git a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt index b7ea49c7283..72ba1411320 100644 --- a/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt +++ b/tests/baselines/reference/arrayLiteralExpressionContextualTyping.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(8,5): error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | string' - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionContextualTyping.ts(14,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. Property '0' is missing in type 'number[]'. @@ -21,9 +20,8 @@ tests/cases/conformance/expressions/contextualTyping/arrayLiteralExpressionConte !!! error TS2322: Type '[number, number, number, string]' is not assignable to type '[number, number, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. // In a contextually typed array literal expression containing one or more spread elements, // an element expression at index N is contextually typed by the numeric index type of the contextual type, if any. diff --git a/tests/baselines/reference/arrayLiterals3.errors.txt b/tests/baselines/reference/arrayLiterals3.errors.txt index a3d3611cf55..637fb3e3bc4 100644 --- a/tests/baselines/reference/arrayLiterals3.errors.txt +++ b/tests/baselines/reference/arrayLiterals3.errors.txt @@ -6,9 +6,8 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(11,5): error tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(17,5): error TS2322: Type '[number, number, string, boolean]' is not assignable to type '[number, number]'. Types of property 'pop' are incompatible. Type '() => number | string | boolean' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | string | boolean' - Type 'number | string | boolean' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'number | string | boolean' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(32,5): error TS2322: Type '(number[] | string[])[]' is not assignable to type 'tup'. Property '0' is missing in type '(number[] | string[])[]'. tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(33,5): error TS2322: Type 'number[]' is not assignable to type '[number, number, number]'. @@ -16,11 +15,10 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(33,5): error tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error TS2322: Type '(number | string)[]' is not assignable to type 'myArray'. Types of property 'push' are incompatible. Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. - Signature '(...items: Number[]): number' has no corresponding signature in '(...items: (number | string)[]) => number' - Types of parameters 'items' and 'items' are incompatible. - Type 'number | string' is not assignable to type 'Number'. - Type 'string' is not assignable to type 'Number'. - Property 'toFixed' is missing in type 'String'. + Types of parameters 'items' and 'items' are incompatible. + Type 'number | string' is not assignable to type 'Number'. + Type 'string' is not assignable to type 'Number'. + Property 'toFixed' is missing in type 'String'. ==== tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts (6 errors) ==== @@ -52,9 +50,8 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error !!! error TS2322: Type '[number, number, string, boolean]' is not assignable to type '[number, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string | boolean' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string | boolean' -!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. // The resulting type an array literal expression is determined as follows: // - the resulting type is an array type with an element type that is the union of the types of the @@ -82,9 +79,8 @@ tests/cases/conformance/expressions/arrayLiterals/arrayLiterals3.ts(34,5): error !!! error TS2322: Type '(number | string)[]' is not assignable to type 'myArray'. !!! error TS2322: Types of property 'push' are incompatible. !!! error TS2322: Type '(...items: (number | string)[]) => number' is not assignable to type '(...items: Number[]) => number'. -!!! error TS2322: Signature '(...items: Number[]): number' has no corresponding signature in '(...items: (number | string)[]) => number' -!!! error TS2322: Types of parameters 'items' and 'items' are incompatible. -!!! error TS2322: Type 'number | string' is not assignable to type 'Number'. -!!! error TS2322: Type 'string' is not assignable to type 'Number'. -!!! error TS2322: Property 'toFixed' is missing in type 'String'. +!!! error TS2322: Types of parameters 'items' and 'items' are incompatible. +!!! error TS2322: Type 'number | string' is not assignable to type 'Number'. +!!! error TS2322: Type 'string' is not assignable to type 'Number'. +!!! error TS2322: Property 'toFixed' is missing in type 'String'. \ No newline at end of file diff --git a/tests/baselines/reference/asOperatorContextualType.errors.txt b/tests/baselines/reference/asOperatorContextualType.errors.txt index 6c52114625b..c53b407b5cf 100644 --- a/tests/baselines/reference/asOperatorContextualType.errors.txt +++ b/tests/baselines/reference/asOperatorContextualType.errors.txt @@ -1,6 +1,5 @@ tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. - Signature '(x: number): string' has no corresponding signature in '(v: number) => number' - Type 'number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts (1 errors) ==== @@ -8,5 +7,4 @@ tests/cases/conformance/expressions/asOperator/asOperatorContextualType.ts(2,9): var x = (v => v) as (x: number) => string; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '(v: number) => number' nor type '(x: number) => string' is assignable to the other. -!!! error TS2352: Signature '(x: number): string' has no corresponding signature in '(v: number) => number' -!!! error TS2352: Type 'number' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2352: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/assignFromBooleanInterface2.errors.txt b/tests/baselines/reference/assignFromBooleanInterface2.errors.txt index f20050a5b9e..c03eab60c74 100644 --- a/tests/baselines/reference/assignFromBooleanInterface2.errors.txt +++ b/tests/baselines/reference/assignFromBooleanInterface2.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(14,1): error TS2322: Type 'NotBoolean' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => Object' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => Object' - Type 'Object' is not assignable to type 'boolean'. + Type 'Object' is not assignable to type 'boolean'. tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(19,1): error TS2322: Type 'Boolean' is not assignable to type 'boolean'. tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts(20,1): error TS2322: Type 'NotBoolean' is not assignable to type 'boolean'. @@ -26,8 +25,7 @@ tests/cases/conformance/types/primitives/boolean/assignFromBooleanInterface2.ts( !!! error TS2322: Type 'NotBoolean' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. -!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => Object' -!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. +!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. b = a; b = x; diff --git a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt index 16fff660c1d..c7552c3fdb2 100644 --- a/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt +++ b/tests/baselines/reference/assignmentCompatBetweenTupleAndArray.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatBetweenTupleAndArray.ts(17,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | string' - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatBetweenTupleAndArray.ts(18,1): error TS2322: Type '{}[]' is not assignable to type '[{}]'. Property '0' is missing in type '{}[]'. @@ -30,9 +29,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type '[number, string]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. emptyObjTuple = emptyObjArray; ~~~~~~~~~~~~~ !!! error TS2322: Type '{}[]' is not assignable to type '[{}]'. diff --git a/tests/baselines/reference/assignmentCompatBug5.errors.txt b/tests/baselines/reference/assignmentCompatBug5.errors.txt index f8b1a1094e2..1b5e3d80259 100644 --- a/tests/baselines/reference/assignmentCompatBug5.errors.txt +++ b/tests/baselines/reference/assignmentCompatBug5.errors.txt @@ -3,12 +3,10 @@ tests/cases/compiler/assignmentCompatBug5.ts(2,8): error TS2345: Argument of typ tests/cases/compiler/assignmentCompatBug5.ts(5,6): error TS2345: Argument of type 'string[]' is not assignable to parameter of type 'number[]'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatBug5.ts(8,6): error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. - Signature '(n: number): number' has no corresponding signature in '(s: string) => void' - Types of parameters 's' and 'n' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 's' and 'n' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. - Signature '(n: number): number' has no corresponding signature in '(n: number) => void' - Type 'void' is not assignable to type 'number'. + Type 'void' is not assignable to type 'number'. ==== tests/cases/compiler/assignmentCompatBug5.ts (4 errors) ==== @@ -28,13 +26,11 @@ tests/cases/compiler/assignmentCompatBug5.ts(9,6): error TS2345: Argument of typ foo3((s:string) => { }); ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => void' is not assignable to parameter of type '(n: number) => number'. -!!! error TS2345: Signature '(n: number): number' has no corresponding signature in '(s: string) => void' -!!! error TS2345: Types of parameters 's' and 'n' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 's' and 'n' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. foo3((n) => { return; }); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: number) => void' is not assignable to parameter of type '(n: number) => number'. -!!! error TS2345: Signature '(n: number): number' has no corresponding signature in '(n: number) => void' -!!! error TS2345: Type 'void' is not assignable to type 'number'. +!!! error TS2345: Type 'void' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt index 194b1834a61..6a221ef144e 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures.errors.txt @@ -1,35 +1,27 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(35,1): error TS2322: Type 'S2' is not assignable to type 'T'. - Signature '(x: number): void' has no corresponding signature in 'S2' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(36,1): error TS2322: Type '(x: string) => void' is not assignable to type 'T'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(37,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(38,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(39,1): error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in 'S2' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(40,1): error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(41,1): error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts(42,1): error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures.ts (8 errors) ==== @@ -70,49 +62,41 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme t = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'T'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in 'S2' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'T'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => number' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'T'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in 'S2' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => number' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt index fdcc9fe6ec9..e67f0a930c2 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures2.errors.txt @@ -9,15 +9,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(42,1): error TS2322: Type 'S2' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(43,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(44,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(45,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. @@ -25,15 +23,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(46,1): error TS2322: Type 'S2' is not assignable to type '{ f(x: number): void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(47,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(48,1): error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures2.ts(49,1): error TS2322: Type '(x: string) => string' is not assignable to type '{ f(x: number): void; }'. @@ -99,17 +95,15 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. @@ -123,17 +117,15 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type '{ f(x: number): void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f(x: number): void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '{ f(x: number): void; }'. diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt index 3620fb0e8c3..e00d1eea042 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures4.errors.txt @@ -1,16 +1,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(52,9): error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts(53,9): error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. - Signature '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignatures4.ts (2 errors) ==== @@ -68,20 +65,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a8 = b8; // error, { foo: number } and Base are incompatible ~~ !!! error TS2322: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2322: Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2322: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' -!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2322: Types of property 'foo' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. b8 = a8; // error, { foo: number } and Base are incompatible ~~ !!! error TS2322: Type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. -!!! error TS2322: Signature '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. var b10: (...x: T[]) => T; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt index 504f6d70799..f89bbfa5798 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithOptionalParameters.errors.txt @@ -1,17 +1,10 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(20,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(x: number, y?: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(22,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(33,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. - Signature '(x?: number): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(39,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts(45,5): error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithOptionalParameters.ts (7 errors) ==== @@ -33,22 +26,18 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = (x: number) => 1; // error, too many required params ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number) => number' a = b.a; // ok a = b.a2; // ok a = b.a3; // error ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number) => number' a = b.a4; // error ~ !!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number, y?: number) => number' a = b.a5; // ok a = b.a6; // error ~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(x: number, y: number) => number' var a2: (x?: number) => number; a2 = () => 1; // ok, same number of required params @@ -62,7 +51,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = b.a6; // error ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x?: number) => number'. -!!! error TS2322: Signature '(x?: number): number' has no corresponding signature in '(x: number, y: number) => number' var a3: (x: number) => number; a3 = () => 1; // ok, fewer required params @@ -71,7 +59,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = (x: number, y: number) => 1; // error, too many required params ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. -!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' a3 = b.a; // ok a3 = b.a2; // ok a3 = b.a3; // ok @@ -80,7 +67,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = b.a6; // error ~~ !!! error TS2322: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. -!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' var a4: (x: number, y?: number) => number; a4 = () => 1; // ok, fewer required params diff --git a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt index e785ab663ca..8eec8503e70 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithCallSignaturesWithRestParameters.errors.txt @@ -1,39 +1,30 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(13,5): error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. - Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' - Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(17,5): error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. - Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' - Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(26,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. - Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(35,5): error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(36,5): error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' - Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'z' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(37,5): error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(41,5): error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(43,5): error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts(45,5): error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithCallSignaturesWithRestParameters.ts (9 errors) ==== @@ -52,18 +43,16 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = (...args: string[]) => 1; // error, type mismatch ~ !!! error TS2322: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2322: Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' -!!! error TS2322: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'args' and 'args' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = (x?: number) => 1; // ok, same number of required params a = (x?: number, y?: number, z?: number) => 1; // ok, same number of required params a = (x: number) => 1; // ok, rest param corresponds to infinite number of params a = (x?: string) => 1; // error, incompatible type ~ !!! error TS2322: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2322: Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' -!!! error TS2322: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'args' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a2: (x: number, ...z: number[]) => number; @@ -75,9 +64,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = (x: number, ...args: string[]) => 1; // should be type mismatch error ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. -!!! error TS2322: Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' -!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a2 = (x: number, y: number) => 1; // ok, rest param corresponds to infinite number of params a2 = (x: number, y?: number) => 1; // ok, same number of required params @@ -89,41 +77,35 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = (x: number, y?: number, z?: number) => 1; // error ~~ !!! error TS2322: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a3 = (x: number, ...z: number[]) => 1; // error ~~ !!! error TS2322: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' -!!! error TS2322: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'z' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a3 = (x: string, y?: string, z?: string) => 1; // error ~~ !!! error TS2322: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a4: (x?: number, y?: string, ...z: number[]) => number; a4 = () => 1; // ok, fewer required params a4 = (x?: number, y?: number) => 1; // error, type mismatch ~~ !!! error TS2322: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a4 = (x: number) => 1; // ok, all present params match a4 = (x: number, y?: number) => 1; // error, second param has type mismatch ~~ !!! error TS2322: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. a4 = (x?: number, y?: string) => 1; // ok, same number of required params with matching types a4 = (x: number, ...args: string[]) => 1; // error, rest params have type mismatch ~~ !!! error TS2322: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2322: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' -!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt index 3a771411b53..8835b6280c4 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt @@ -1,34 +1,27 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(52,9): error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(53,9): error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. - Signature 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. - Signature 'new (x: { new (a: number): number; new (a?: number): number; }): number[]' has no corresponding signature in 'new (x: (a: T) => T) => T[]' - Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. - Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' + Types of parameters 'x' and 'x' are incompatible. + Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. + Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. - Signature 'new (x: (a: T) => T): T[]' has no corresponding signature in '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' - Types of parameters 'x' and 'x' are incompatible. - Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. + Types of parameters 'x' and 'x' are incompatible. + Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. - Signature 'new (x: { new (a: T): T; new (a: T): T; }): any[]' has no corresponding signature in 'new (x: (a: T) => T) => any[]' - Types of parameters 'x' and 'x' are incompatible. - Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. - Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' + Types of parameters 'x' and 'x' are incompatible. + Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. + Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(82,9): error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. - Signature 'new (x: (a: T) => T): any[]' has no corresponding signature in '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' - Types of parameters 'x' and 'x' are incompatible. - Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. + Types of parameters 'x' and 'x' are incompatible. + Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts (6 errors) ==== @@ -86,20 +79,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a8 = b8; // error, type mismatch ~~ !!! error TS2322: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2322: Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2322: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' -!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2322: Types of property 'foo' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2322: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2322: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2322: Types of property 'foo' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. b8 = a8; // error ~~ !!! error TS2322: Type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' is not assignable to type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U'. -!!! error TS2322: Signature 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U): (r: T) => U' has no corresponding signature in 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type '(arg2: Base) => Derived' is not assignable to type '(arg2: { foo: number; }) => any'. var b10: new (...x: T[]) => T; @@ -126,31 +116,27 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a16 = b16; // error ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. -!!! error TS2322: Signature 'new (x: { new (a: number): number; new (a?: number): number; }): number[]' has no corresponding signature in 'new (x: (a: T) => T) => T[]' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. -!!! error TS2322: Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. +!!! error TS2322: Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' b16 = a16; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. -!!! error TS2322: Signature 'new (x: (a: T) => T): T[]' has no corresponding signature in '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. var b17: new (x: (a: T) => T) => any[]; a17 = b17; // error ~~~ !!! error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. -!!! error TS2322: Signature 'new (x: { new (a: T): T; new (a: T): T; }): any[]' has no corresponding signature in 'new (x: (a: T) => T) => any[]' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. -!!! error TS2322: Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. +!!! error TS2322: Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' b17 = a17; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. -!!! error TS2322: Signature 'new (x: (a: T) => T): any[]' has no corresponding signature in '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. } module WithGenericSignaturesInBaseType { diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt index 4ba4ec9a3c3..df56af3ee98 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignaturesWithOptionalParameters.errors.txt @@ -1,13 +1,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(16,5): error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(17,5): error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in 'new (x: number, y?: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(19,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in 'new (x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(27,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. - Signature 'new (x?: number): number' has no corresponding signature in 'new (x: number, y: number) => number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts(35,5): error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. - Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignaturesWithOptionalParameters.ts (5 errors) ==== @@ -29,16 +24,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a = b.a3; // error ~ !!! error TS2322: Type 'new (x: number) => number' is not assignable to type 'new () => number'. -!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' a = b.a4; // error ~ !!! error TS2322: Type 'new (x: number, y?: number) => number' is not assignable to type 'new () => number'. -!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number, y?: number) => number' a = b.a5; // ok a = b.a6; // error ~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new () => number'. -!!! error TS2322: Signature 'new (): number' has no corresponding signature in 'new (x: number, y: number) => number' var a2: new (x?: number) => number; a2 = b.a; // ok @@ -49,7 +41,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a2 = b.a6; // error ~~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x?: number) => number'. -!!! error TS2322: Signature 'new (x?: number): number' has no corresponding signature in 'new (x: number, y: number) => number' var a3: new (x: number) => number; a3 = b.a; // ok @@ -60,7 +51,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme a3 = b.a6; // error ~~ !!! error TS2322: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. -!!! error TS2322: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' var a4: new (x: number, y?: number) => number; a4 = b.a; // ok diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt index 229ec114d39..a18da8fd8f7 100644 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.errors.txt @@ -1,15 +1,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(14,13): error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(23,13): error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(65,9): error TS2322: Type '(x: T) => T' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(66,9): error TS2322: Type '(x: T, y?: T) => T' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T, y?: T) => T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(107,13): error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => any' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts(116,13): error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -29,7 +23,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a = (x: T) => null; // error, too many required params ~~~~~~ !!! error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. -!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => any' this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params @@ -41,7 +34,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a3 = (x: T, y: T) => null; // error, too many required params ~~~~~~~ !!! error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. -!!! error TS2322: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params @@ -86,11 +78,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme b.a = t.a3; ~~~ !!! error TS2322: Type '(x: T) => T' is not assignable to type '() => T'. -!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => T' b.a = t.a4; ~~~ !!! error TS2322: Type '(x: T, y?: T) => T' is not assignable to type '() => T'. -!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T, y?: T) => T' b.a = t.a5; b.a2 = t.a; @@ -134,7 +124,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a = (x: T) => null; // error, too many required params ~~~~~~ !!! error TS2322: Type '(x: T) => any' is not assignable to type '() => T'. -!!! error TS2322: Signature '(): T' has no corresponding signature in '(x: T) => any' this.a2 = () => null; // ok, same T of required params this.a2 = (x?: T) => null; // ok, same T of required params @@ -146,7 +135,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme this.a3 = (x: T, y: T) => null; // error, too many required params ~~~~~~~ !!! error TS2322: Type '(x: T, y: T) => any' is not assignable to type '(x: T) => T'. -!!! error TS2322: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => any' this.a4 = () => null; // ok, fewer required params this.a4 = (x?: T, y?: T) => null; // ok, fewer required params diff --git a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt index 1def25bf372..3bea0c46716 100644 --- a/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithOverloads.errors.txt @@ -1,17 +1,13 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(17,1): error TS2322: Type '(x: string) => string' is not assignable to type '(s1: string) => number'. - Signature '(s1: string): number' has no corresponding signature in '(x: string) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatWithOverloads.ts(19,1): error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. - Signature '(s1: string): number' has no corresponding signature in '(x: number) => number' - Types of parameters 'x' and 's1' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 's1' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/assignmentCompatWithOverloads.ts(21,1): error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. - Signature '(s1: string): number' has no corresponding signature in '{ (x: string): string; (x: number): number; }' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in 'typeof C' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/assignmentCompatWithOverloads.ts (4 errors) ==== @@ -34,21 +30,18 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type g = f2; // Error ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '(x: string) => string' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. g = f3; // Error ~ !!! error TS2322: Type '(x: number) => number' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '(x: number) => number' -!!! error TS2322: Types of parameters 'x' and 's1' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'x' and 's1' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. g = f4; // Error ~ !!! error TS2322: Type '{ (x: string): string; (x: number): number; }' is not assignable to type '(s1: string) => number'. -!!! error TS2322: Signature '(s1: string): number' has no corresponding signature in '{ (x: string): string; (x: number): number; }' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. class C { constructor(x: string); @@ -60,6 +53,5 @@ tests/cases/compiler/assignmentCompatWithOverloads.ts(30,1): error TS2322: Type d = C; // Error ~ !!! error TS2322: Type 'typeof C' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'typeof C' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt index 8aa24d79ac0..bc1ef24127a 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es6.errors.txt @@ -3,12 +3,10 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(8,16): error TS1055: Type 'number' is not a valid async function return type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(9,16): error TS1055: Type 'PromiseLike' is not a valid async function return type. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(10,16): error TS1055: Type 'typeof Thenable' is not a valid async function return type. - Signature 'new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): PromiseLike' has no corresponding signature in 'typeof Thenable' - Type 'Thenable' is not assignable to type 'PromiseLike'. - Types of property 'then' are incompatible. - Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. - Signature '(onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'PromiseLike'. + Type 'Thenable' is not assignable to type 'PromiseLike'. + Types of property 'then' are incompatible. + Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. + Type 'void' is not assignable to type 'PromiseLike'. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(17,16): error TS1059: Return expression in async function does not have a valid callable 'then' member. tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(23,25): error TS1058: Operand for 'await' does not have a valid callable 'then' member. @@ -34,12 +32,10 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1 async function fn6(): Thenable { } // error ~~~ !!! error TS1055: Type 'typeof Thenable' is not a valid async function return type. -!!! error TS1055: Signature 'new (executor: (resolve: (value?: T | PromiseLike) => void, reject: (reason?: any) => void) => void): PromiseLike' has no corresponding signature in 'typeof Thenable' -!!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike'. -!!! error TS1055: Types of property 'then' are incompatible. -!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. -!!! error TS1055: Signature '(onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike' has no corresponding signature in '() => void' -!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. +!!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike'. +!!! error TS1055: Types of property 'then' are incompatible. +!!! error TS1055: Type '() => void' is not assignable to type '{ (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => TResult | PromiseLike): PromiseLike; (onfulfilled?: (value: any) => TResult | PromiseLike, onrejected?: (reason: any) => void): PromiseLike; }'. +!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. async function fn7() { return; } // valid: Promise async function fn8() { return 1; } // valid: Promise async function fn9() { return null; } // valid: Promise diff --git a/tests/baselines/reference/booleanAssignment.errors.txt b/tests/baselines/reference/booleanAssignment.errors.txt index b16cca5c1bb..454bd7ef707 100644 --- a/tests/baselines/reference/booleanAssignment.errors.txt +++ b/tests/baselines/reference/booleanAssignment.errors.txt @@ -1,18 +1,15 @@ tests/cases/compiler/booleanAssignment.ts(2,1): error TS2322: Type 'number' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => number' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => number' - Type 'number' is not assignable to type 'boolean'. + Type 'number' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(3,1): error TS2322: Type 'string' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => string' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'boolean'. + Type 'string' is not assignable to type 'boolean'. tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not assignable to type 'Boolean'. Types of property 'valueOf' are incompatible. Type '() => Object' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => Object' - Type 'Object' is not assignable to type 'boolean'. + Type 'Object' is not assignable to type 'boolean'. ==== tests/cases/compiler/booleanAssignment.ts (3 errors) ==== @@ -22,22 +19,19 @@ tests/cases/compiler/booleanAssignment.ts(4,1): error TS2322: Type '{}' is not a !!! error TS2322: Type 'number' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => boolean'. -!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => number' -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. b = "a"; // Error ~ !!! error TS2322: Type 'string' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => boolean'. -!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => string' -!!! error TS2322: Type 'string' is not assignable to type 'boolean'. +!!! error TS2322: Type 'string' is not assignable to type 'boolean'. b = {}; // Error ~ !!! error TS2322: Type '{}' is not assignable to type 'Boolean'. !!! error TS2322: Types of property 'valueOf' are incompatible. !!! error TS2322: Type '() => Object' is not assignable to type '() => boolean'. -!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => Object' -!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. +!!! error TS2322: Type 'Object' is not assignable to type 'boolean'. var o = {}; o = b; // OK diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt b/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt index 3e66787b54d..d6efdd66868 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance.ts(57,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: number) => string' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: number) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance.ts (1 errors) ==== @@ -67,8 +66,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: number) => string' is not assignable to type '(x: number) => number'. -!!! error TS2430: Signature '(x: number): number' has no corresponding signature in '(x: number) => string' -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: (x: number) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt index b3bdb17ea71..7e9d75b1b41 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance3.errors.txt @@ -1,20 +1,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts(51,19): error TS2430: Interface 'I2' incorrectly extends interface 'A'. Types of property 'a2' are incompatible. Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. - Signature '(x: number): string[]' has no corresponding signature in '(x: T) => U[]' - Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts(60,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSignatureAssignabilityInInheritance3.ts (2 errors) ==== @@ -73,9 +70,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I2' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: T) => U[]' is not assignable to type '(x: number) => string[]'. -!!! error TS2430: Signature '(x: number): string[]' has no corresponding signature in '(x: T) => U[]' -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'T' is not assignable to type 'number'. a2: (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -89,14 +85,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/callSign !!! error TS2430: Interface 'I4' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2430: Signature '(x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in '(x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2430: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' -!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2430: Types of property 'foo' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2430: Types of property 'foo' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a8: (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; // error, type mismatch } diff --git a/tests/baselines/reference/castingTuple.errors.txt b/tests/baselines/reference/castingTuple.errors.txt index cdf40eeeff6..62a36c9c156 100644 --- a/tests/baselines/reference/castingTuple.errors.txt +++ b/tests/baselines/reference/castingTuple.errors.txt @@ -13,9 +13,8 @@ tests/cases/conformance/types/tuple/castingTuple.ts(30,5): error TS2403: Subsequ tests/cases/conformance/types/tuple/castingTuple.ts(30,14): error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | string' - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot find name 't4'. @@ -71,9 +70,8 @@ tests/cases/conformance/types/tuple/castingTuple.ts(31,1): error TS2304: Cannot !!! error TS2352: Neither type '[number, string]' nor type 'number[]' is assignable to the other. !!! error TS2352: Types of property 'pop' are incompatible. !!! error TS2352: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2352: Signature '(): number' has no corresponding signature in '() => number | string' -!!! error TS2352: Type 'number | string' is not assignable to type 'number'. -!!! error TS2352: Type 'string' is not assignable to type 'number'. +!!! error TS2352: Type 'number | string' is not assignable to type 'number'. +!!! error TS2352: Type 'string' is not assignable to type 'number'. t4[2] = 10; ~~ !!! error TS2304: Cannot find name 't4'. diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt index 579f6c47138..181bfcc907d 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts(19,59): error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. - Signature '(x: C): C' has no corresponding signature in '(c: C) => B' - Type 'B' is not assignable to type 'C'. - Property 'z' is missing in type 'B'. + Type 'B' is not assignable to type 'C'. + Property 'z' is missing in type 'B'. ==== tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter.ts (1 errors) ==== @@ -26,6 +25,5 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParamete (new Chain(new A)).then(a => new B).then(b => new C).then(c => new B).then(b => new A); ~~~~~~~~~~ !!! error TS2345: Argument of type '(c: C) => B' is not assignable to parameter of type '(x: C) => C'. -!!! error TS2345: Signature '(x: C): C' has no corresponding signature in '(c: C) => B' -!!! error TS2345: Type 'B' is not assignable to type 'C'. -!!! error TS2345: Property 'z' is missing in type 'B'. \ No newline at end of file +!!! error TS2345: Type 'B' is not assignable to type 'C'. +!!! error TS2345: Property 'z' is missing in type 'B'. \ No newline at end of file diff --git a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt index 1de7ead6e04..8f5924586df 100644 --- a/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt +++ b/tests/baselines/reference/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.errors.txt @@ -1,9 +1,7 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(7,43): error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. - Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' - Type 'T' is not assignable to type 'S'. + Type 'T' is not assignable to type 'S'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(10,29): error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. - Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' - Type 'T' is not assignable to type 'S'. + Type 'T' is not assignable to type 'S'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(32,9): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(36,9): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParameter2.ts(37,9): error TS2322: Type 'string' is not assignable to type 'number'. @@ -19,15 +17,13 @@ tests/cases/compiler/chainedCallsWithTypeParameterConstrainedToOtherTypeParamete (new Chain(t)).then(tt => s).then(ss => t); ~~~~~~~ !!! error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. -!!! error TS2345: Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' -!!! error TS2345: Type 'T' is not assignable to type 'S'. +!!! error TS2345: Type 'T' is not assignable to type 'S'. // But error to try to climb up the chain (new Chain(s)).then(ss => t); ~~~~~~~ !!! error TS2345: Argument of type '(ss: S) => T' is not assignable to parameter of type '(x: S) => S'. -!!! error TS2345: Signature '(x: S): S' has no corresponding signature in '(ss: S) => T' -!!! error TS2345: Type 'T' is not assignable to type 'S'. +!!! error TS2345: Type 'T' is not assignable to type 'S'. // Staying at T or S should be fine (new Chain(t)).then(tt => t).then(tt => t).then(tt => t); diff --git a/tests/baselines/reference/classSideInheritance3.errors.txt b/tests/baselines/reference/classSideInheritance3.errors.txt index 4d6a5a9b018..c845defa5b8 100644 --- a/tests/baselines/reference/classSideInheritance3.errors.txt +++ b/tests/baselines/reference/classSideInheritance3.errors.txt @@ -1,7 +1,5 @@ tests/cases/compiler/classSideInheritance3.ts(16,5): error TS2322: Type 'typeof B' is not assignable to type 'typeof A'. - Signature 'new (x: string): A' has no corresponding signature in 'typeof B' tests/cases/compiler/classSideInheritance3.ts(17,5): error TS2322: Type 'typeof B' is not assignable to type 'new (x: string) => A'. - Signature 'new (x: string): A' has no corresponding signature in 'typeof B' ==== tests/cases/compiler/classSideInheritance3.ts (2 errors) ==== @@ -23,9 +21,7 @@ tests/cases/compiler/classSideInheritance3.ts(17,5): error TS2322: Type 'typeof var r1: typeof A = B; // error ~~ !!! error TS2322: Type 'typeof B' is not assignable to type 'typeof A'. -!!! error TS2322: Signature 'new (x: string): A' has no corresponding signature in 'typeof B' var r2: new (x: string) => A = B; // error ~~ !!! error TS2322: Type 'typeof B' is not assignable to type 'new (x: string) => A'. -!!! error TS2322: Signature 'new (x: string): A' has no corresponding signature in 'typeof B' var r3: typeof A = C; // ok \ No newline at end of file diff --git a/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt b/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt index 867a044420d..2fa13333058 100644 --- a/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt +++ b/tests/baselines/reference/conditionalOperatorWithoutIdenticalBCT.errors.txt @@ -6,16 +6,13 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou Property 'propertyB' is missing in type 'A'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(19,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'. Type '(n: X) => string' is not assignable to type '(t: X) => number'. - Signature '(t: X): number' has no corresponding signature in '(n: X) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(20,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'. Type '(m: X) => number' is not assignable to type '(t: X) => string'. - Signature '(t: X): string' has no corresponding signature in '(m: X) => number' - Type 'number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts(21,5): error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'. Type '(m: X) => number' is not assignable to type '(t: X) => boolean'. - Signature '(t: X): boolean' has no corresponding signature in '(m: X) => number' - Type 'number' is not assignable to type 'boolean'. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithoutIdenticalBCT.ts (5 errors) ==== @@ -49,19 +46,16 @@ tests/cases/conformance/expressions/conditonalOperator/conditionalOperatorWithou ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => number'. !!! error TS2322: Type '(n: X) => string' is not assignable to type '(t: X) => number'. -!!! error TS2322: Signature '(t: X): number' has no corresponding signature in '(n: X) => string' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var result5: (t: X) => string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => string'. !!! error TS2322: Type '(m: X) => number' is not assignable to type '(t: X) => string'. -!!! error TS2322: Signature '(t: X): string' has no corresponding signature in '(m: X) => number' -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var result6: (t: X) => boolean = true ? (m) => m.propertyX1 : (n) => n.propertyX2; ~~~~~~~ !!! error TS2322: Type '((m: X) => number) | ((n: X) => string)' is not assignable to type '(t: X) => boolean'. !!! error TS2322: Type '(m: X) => number' is not assignable to type '(t: X) => boolean'. -!!! error TS2322: Signature '(t: X): boolean' has no corresponding signature in '(m: X) => number' -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. var result61: (t: X) => number| string = true ? (m) => m.propertyX1 : (n) => n.propertyX2; \ No newline at end of file diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt b/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt index 178239b729e..51278fc3f44 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance.ts(61,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: number) => string' is not assignable to type 'new (x: number) => number'. - Signature 'new (x: number): number' has no corresponding signature in 'new (x: number) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance.ts (1 errors) ==== @@ -71,8 +70,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: number) => string' is not assignable to type 'new (x: number) => number'. -!!! error TS2430: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number) => string' -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: new (x: number) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt index 5125fc27301..8d6273804f7 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance3.errors.txt @@ -1,20 +1,17 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts(41,19): error TS2430: Interface 'I2' incorrectly extends interface 'A'. Types of property 'a2' are incompatible. Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. - Signature 'new (x: number): string[]' has no corresponding signature in 'new (x: T) => U[]' - Types of parameters 'x' and 'x' are incompatible. - Type 'T' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts(50,19): error TS2430: Interface 'I4' incorrectly extends interface 'A'. Types of property 'a8' are incompatible. Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. - Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' - Types of parameters 'y' and 'y' are incompatible. - Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. - Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' - Types of parameters 'arg2' and 'arg2' are incompatible. - Type '{ foo: number; }' is not assignable to type 'Base'. - Types of property 'foo' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. + Types of parameters 'arg2' and 'arg2' are incompatible. + Type '{ foo: number; }' is not assignable to type 'Base'. + Types of property 'foo' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/constructSignatureAssignabilityInInheritance3.ts (2 errors) ==== @@ -63,9 +60,8 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I2' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type 'new (x: T) => U[]' is not assignable to type 'new (x: number) => string[]'. -!!! error TS2430: Signature 'new (x: number): string[]' has no corresponding signature in 'new (x: T) => U[]' -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'T' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'T' is not assignable to type 'number'. a2: new (x: T) => U[]; // error, no contextual signature instantiation since I2.a2 is not generic } @@ -79,14 +75,12 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/construc !!! error TS2430: Interface 'I4' incorrectly extends interface 'A'. !!! error TS2430: Types of property 'a8' are incompatible. !!! error TS2430: Type 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' is not assignable to type 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived) => (r: Base) => Derived'. -!!! error TS2430: Signature 'new (x: (arg: Base) => Derived, y: (arg2: Base) => Derived): (r: Base) => Derived' has no corresponding signature in 'new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U' -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. -!!! error TS2430: Signature '(arg2: Base): Derived' has no corresponding signature in '(arg2: { foo: number; }) => any' -!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. -!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. -!!! error TS2430: Types of property 'foo' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type '(arg2: { foo: number; }) => any' is not assignable to type '(arg2: Base) => Derived'. +!!! error TS2430: Types of parameters 'arg2' and 'arg2' are incompatible. +!!! error TS2430: Type '{ foo: number; }' is not assignable to type 'Base'. +!!! error TS2430: Types of property 'foo' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a8: new (x: (arg: T) => U, y: (arg2: { foo: number; }) => U) => (r: T) => U; // error, type mismatch } diff --git a/tests/baselines/reference/contextualTypeWithTuple.errors.txt b/tests/baselines/reference/contextualTypeWithTuple.errors.txt index 249e96c8829..e447ed62b39 100644 --- a/tests/baselines/reference/contextualTypeWithTuple.errors.txt +++ b/tests/baselines/reference/contextualTypeWithTuple.errors.txt @@ -1,10 +1,9 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(3,5): error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. Types of property 'pop' are incompatible. Type '() => number | string | boolean' is not assignable to type '() => number | string'. - Signature '(): number | string' has no corresponding signature in '() => number | string | boolean' - Type 'number | string | boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'number | string'. - Type 'boolean' is not assignable to type 'string'. + Type 'number | string | boolean' is not assignable to type 'number | string'. + Type 'boolean' is not assignable to type 'number | string'. + Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(15,1): error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(18,1): error TS2322: Type '[{}, number]' is not assignable to type '[{ a: string; }, number]'. Types of property '0' are incompatible. @@ -15,9 +14,8 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(19,1): error TS23 tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(20,5): error TS2322: Type '[string, string, number]' is not assignable to type '[string, string]'. Types of property 'pop' are incompatible. Type '() => string | number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => string | number' - Type 'string | number' is not assignable to type 'string'. - Type 'number' is not assignable to type 'string'. + Type 'string | number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(24,1): error TS2322: Type '[C, string | number]' is not assignable to type '[C, string | number, D]'. Property '2' is missing in type '[C, string | number]'. tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS2322: Type '[number, string | number]' is not assignable to type '[number, string]'. @@ -34,10 +32,9 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS23 !!! error TS2322: Type '[number, string, boolean]' is not assignable to type '[number, string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string | boolean' is not assignable to type '() => number | string'. -!!! error TS2322: Signature '(): number | string' has no corresponding signature in '() => number | string | boolean' -!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number | string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'number | string'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. +!!! error TS2322: Type 'number | string | boolean' is not assignable to type 'number | string'. +!!! error TS2322: Type 'boolean' is not assignable to type 'number | string'. +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. var numStrBoolTuple: [number, string, boolean] = [5, "foo", true]; var objNumTuple: [{ a: string }, number] = [{ a: "world" }, 5]; var strTupleTuple: [string, [number, {}]] = ["bar", [5, { x: 1, y: 1 }]]; @@ -69,9 +66,8 @@ tests/cases/conformance/types/tuple/contextualTypeWithTuple.ts(25,1): error TS23 !!! error TS2322: Type '[string, string, number]' is not assignable to type '[string, string]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => string | number' -!!! error TS2322: Type 'string | number' is not assignable to type 'string'. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'string | number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. unionTuple = unionTuple1; unionTuple = unionTuple2; diff --git a/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt b/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt index 1e0865de8db..8be323f9af4 100644 --- a/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt +++ b/tests/baselines/reference/contextualTypeWithUnionTypeObjectLiteral.errors.txt @@ -27,9 +27,8 @@ tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts( Type '{ commonMethodDifferentReturnType: (a: string, b: number) => string | number; }' is not assignable to type 'I21'. Types of property 'commonMethodDifferentReturnType' are incompatible. Type '(a: string, b: number) => string | number' is not assignable to type '(a: string, b: number) => number'. - Signature '(a: string, b: number): number' has no corresponding signature in '(a: string, b: number) => string | number' - Type 'string | number' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'string | number' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts (6 errors) ==== @@ -125,8 +124,7 @@ tests/cases/conformance/types/union/contextualTypeWithUnionTypeObjectLiteral.ts( !!! error TS2322: Type '{ commonMethodDifferentReturnType: (a: string, b: number) => string | number; }' is not assignable to type 'I21'. !!! error TS2322: Types of property 'commonMethodDifferentReturnType' are incompatible. !!! error TS2322: Type '(a: string, b: number) => string | number' is not assignable to type '(a: string, b: number) => number'. -!!! error TS2322: Signature '(a: string, b: number): number' has no corresponding signature in '(a: string, b: number) => string | number' -!!! error TS2322: Type 'string | number' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string | number' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. commonMethodDifferentReturnType: (a, b) => strOrNumber, }; \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping24.errors.txt b/tests/baselines/reference/contextualTyping24.errors.txt index 1d1fd191944..68cb8e3d853 100644 --- a/tests/baselines/reference/contextualTyping24.errors.txt +++ b/tests/baselines/reference/contextualTyping24.errors.txt @@ -1,15 +1,13 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. - Signature '(a: { (): number; (i: number): number; }): number' has no corresponding signature in '(a: string) => number' - Types of parameters 'a' and 'a' are incompatible. - Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. - Signature '(): number' has no corresponding signature in 'String' + Types of parameters 'a' and 'a' are incompatible. + Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. + Signature '(): number' has no corresponding signature in 'String' ==== tests/cases/compiler/contextualTyping24.ts (1 errors) ==== var foo:(a:{():number; (i:number):number; })=>number; foo = function(a:string){return 5}; ~~~ !!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. -!!! error TS2322: Signature '(a: { (): number; (i: number): number; }): number' has no corresponding signature in '(a: string) => number' -!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. -!!! error TS2322: Signature '(): number' has no corresponding signature in 'String' \ No newline at end of file +!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. +!!! error TS2322: Signature '(): number' has no corresponding signature in 'String' \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping39.errors.txt b/tests/baselines/reference/contextualTyping39.errors.txt index 3cf5e5aa9ff..e43624fbead 100644 --- a/tests/baselines/reference/contextualTyping39.errors.txt +++ b/tests/baselines/reference/contextualTyping39.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/contextualTyping39.ts(1,11): error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/contextualTyping39.ts (1 errors) ==== var foo = <{ (): number; }> function() { return "err"; }; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '() => string' nor type '() => number' is assignable to the other. -!!! error TS2352: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping41.errors.txt b/tests/baselines/reference/contextualTyping41.errors.txt index a3e33f26ddd..1ed6da1b782 100644 --- a/tests/baselines/reference/contextualTyping41.errors.txt +++ b/tests/baselines/reference/contextualTyping41.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/contextualTyping41.ts(1,11): error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/contextualTyping41.ts (1 errors) ==== var foo = <{():number; (i:number):number; }> (function(){return "err";}); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2352: Neither type '() => string' nor type '{ (): number; (i: number): number; }' is assignable to the other. -!!! error TS2352: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2352: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt index 6fbf1b12967..08fe22c08e0 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression2.errors.txt @@ -1,9 +1,8 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. Type '(b: number) => void' is not assignable to type '(a: A) => void'. - Signature '(a: A): void' has no corresponding signature in '(b: number) => void' - Types of parameters 'b' and 'a' are incompatible. - Type 'number' is not assignable to type 'A'. - Property 'foo' is missing in type 'Number'. + Types of parameters 'b' and 'a' are incompatible. + Type 'number' is not assignable to type 'A'. + Property 'foo' is missing in type 'Number'. ==== tests/cases/compiler/contextualTypingOfConditionalExpression2.ts (1 errors) ==== @@ -21,8 +20,7 @@ tests/cases/compiler/contextualTypingOfConditionalExpression2.ts(11,5): error TS ~~ !!! error TS2322: Type '((a: C) => number) | ((b: number) => void)' is not assignable to type '(a: A) => void'. !!! error TS2322: Type '(b: number) => void' is not assignable to type '(a: A) => void'. -!!! error TS2322: Signature '(a: A): void' has no corresponding signature in '(b: number) => void' -!!! error TS2322: Types of parameters 'b' and 'a' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'A'. -!!! error TS2322: Property 'foo' is missing in type 'Number'. +!!! error TS2322: Types of parameters 'b' and 'a' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'A'. +!!! error TS2322: Property 'foo' is missing in type 'Number'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt index 530993a7e23..a11f0009016 100644 --- a/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt +++ b/tests/baselines/reference/contextualTypingOfGenericFunctionTypedArguments1.errors.txt @@ -1,10 +1,8 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(16,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. - Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' - Type 'string' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'String'. + Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. - Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' - Type 'string' is not assignable to type 'Date'. + Type 'string' is not assignable to type 'Date'. ==== tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts (2 errors) ==== @@ -26,12 +24,10 @@ tests/cases/compiler/contextualTypingOfGenericFunctionTypedArguments1.ts(17,32): var r5 = _.forEach(c2, f); ~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. -!!! error TS2345: Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'String'. +!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r6 = _.forEach(c2, (x) => { return x.toFixed() }); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => Date'. -!!! error TS2345: Signature '(x: number): Date' has no corresponding signature in '(x: number) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity.errors.txt b/tests/baselines/reference/derivedClassTransitivity.errors.txt index 5f47163f13f..c6b620beb18 100644 --- a/tests/baselines/reference/derivedClassTransitivity.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity.ts (1 errors) ==== @@ -29,8 +28,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1); var r2 = e.foo(''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity2.errors.txt b/tests/baselines/reference/derivedClassTransitivity2.errors.txt index 16aa54ef101..a8d2003c876 100644 --- a/tests/baselines/reference/derivedClassTransitivity2.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity2.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity2.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. - Signature '(x: number, y: number): void' has no corresponding signature in '(x: number, y?: string) => void' - Types of parameters 'y' and 'y' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'y' and 'y' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity2.ts (1 errors) ==== @@ -29,8 +28,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number, y?: string) => void' is not assignable to type '(x: number, y: number) => void'. -!!! error TS2322: Signature '(x: number, y: number): void' has no corresponding signature in '(x: number, y?: string) => void' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1, 1); var r2 = e.foo(1, ''); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity3.errors.txt b/tests/baselines/reference/derivedClassTransitivity3.errors.txt index 837c6db67c4..9d301255dfd 100644 --- a/tests/baselines/reference/derivedClassTransitivity3.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity3.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity3.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. - Signature '(x: string, y: string): void' has no corresponding signature in '(x: string, y?: number) => void' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity3.ts (1 errors) ==== @@ -29,8 +28,7 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string, y?: number) => void' is not assignable to type '(x: string, y: string) => void'. -!!! error TS2322: Signature '(x: string, y: string): void' has no corresponding signature in '(x: string, y?: number) => void' -!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var r = c.foo('', ''); var r2 = e.foo('', 1); \ No newline at end of file diff --git a/tests/baselines/reference/derivedClassTransitivity4.errors.txt b/tests/baselines/reference/derivedClassTransitivity4.errors.txt index 47d1d767fbd..c1a80e0a1d7 100644 --- a/tests/baselines/reference/derivedClassTransitivity4.errors.txt +++ b/tests/baselines/reference/derivedClassTransitivity4.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity4.ts(18,1): error TS2322: Type 'E' is not assignable to type 'C'. Types of property 'foo' are incompatible. Type '(x?: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTransitivity4.ts(19,9): error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. @@ -30,9 +29,8 @@ tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassTra !!! error TS2322: Type 'E' is not assignable to type 'C'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x?: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x?: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r = c.foo(1); ~~~~~ !!! error TS2445: Property 'foo' is protected and only accessible within class 'C' and its subclasses. diff --git a/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt b/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt index 6f088a12a9a..ae8fbe2ff5d 100644 --- a/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt +++ b/tests/baselines/reference/derivedInterfaceCallSignature.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/derivedInterfaceCallSignature.ts(11,11): error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. Types of property 'x' are incompatible. Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. - Signature '(): (data: any, index?: number) => number' has no corresponding signature in '(x: (data: any, index?: number) => number) => D3SvgArea' ==== tests/cases/compiler/derivedInterfaceCallSignature.ts (1 errors) ==== @@ -20,7 +19,6 @@ tests/cases/compiler/derivedInterfaceCallSignature.ts(11,11): error TS2430: Inte !!! error TS2430: Interface 'D3SvgArea' incorrectly extends interface 'D3SvgPath'. !!! error TS2430: Types of property 'x' are incompatible. !!! error TS2430: Type '(x: (data: any, index?: number) => number) => D3SvgArea' is not assignable to type '() => (data: any, index?: number) => number'. -!!! error TS2430: Signature '(): (data: any, index?: number) => number' has no corresponding signature in '(x: (data: any, index?: number) => number) => D3SvgArea' x(x: (data: any, index?: number) => number): D3SvgArea; y(y: (data: any, index?: number) => number): D3SvgArea; y0(): (data: any, index?: number) => number; diff --git a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt index a3311319960..c8037255a32 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt +++ b/tests/baselines/reference/destructuringParameterDeclaration2.errors.txt @@ -5,11 +5,10 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(8,4): error TS2345: Argument of type '[number, number, string[][], string]' is not assignable to parameter of type '[number, number, string[][]]'. Types of property 'pop' are incompatible. Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. - Signature '(): number | string[][]' has no corresponding signature in '() => number | string[][] | string' - Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. - Type 'string' is not assignable to type 'number | string[][]'. - Type 'string' is not assignable to type 'string[][]'. - Property 'push' is missing in type 'String'. + Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. + Type 'string' is not assignable to type 'number | string[][]'. + Type 'string' is not assignable to type 'string[][]'. + Property 'push' is missing in type 'String'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,8): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(16,16): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(23,14): error TS2345: Argument of type '{ x: string; y: boolean; }' is not assignable to parameter of type '{ x: number; y: any; }'. @@ -48,10 +47,9 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(55,7): error TS2420: Class 'C4' incorrectly implements interface 'F2'. Types of property 'd4' are incompatible. Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. - Signature '({x, y, z}?: { x: any; y: any; z: any; }): any' has no corresponding signature in '({x, y, c}: { x: any; y: any; c: any; }) => void' - Types of parameters '__0' and '__0' are incompatible. - Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. - Property 'z' is missing in type '{ x: any; y: any; c: any; }'. + Types of parameters '__0' and '__0' are incompatible. + Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. + Property 'z' is missing in type '{ x: any; y: any; c: any; }'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(56,8): error TS2463: A binding pattern parameter cannot be optional in an implementation signature. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,18): error TS2300: Duplicate identifier 'number'. tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts(65,26): error TS2300: Duplicate identifier 'number'. @@ -77,11 +75,10 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2345: Argument of type '[number, number, string[][], string]' is not assignable to parameter of type '[number, number, string[][]]'. !!! error TS2345: Types of property 'pop' are incompatible. !!! error TS2345: Type '() => number | string[][] | string' is not assignable to type '() => number | string[][]'. -!!! error TS2345: Signature '(): number | string[][]' has no corresponding signature in '() => number | string[][] | string' -!!! error TS2345: Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. -!!! error TS2345: Type 'string' is not assignable to type 'number | string[][]'. -!!! error TS2345: Type 'string' is not assignable to type 'string[][]'. -!!! error TS2345: Property 'push' is missing in type 'String'. +!!! error TS2345: Type 'number | string[][] | string' is not assignable to type 'number | string[][]'. +!!! error TS2345: Type 'string' is not assignable to type 'number | string[][]'. +!!! error TS2345: Type 'string' is not assignable to type 'string[][]'. +!!! error TS2345: Property 'push' is missing in type 'String'. // If the declaration includes an initializer expression (which is permitted only @@ -182,10 +179,9 @@ tests/cases/conformance/es6/destructuring/destructuringParameterDeclaration2.ts( !!! error TS2420: Class 'C4' incorrectly implements interface 'F2'. !!! error TS2420: Types of property 'd4' are incompatible. !!! error TS2420: Type '({x, y, c}: { x: any; y: any; c: any; }) => void' is not assignable to type '({x, y, z}?: { x: any; y: any; z: any; }) => any'. -!!! error TS2420: Signature '({x, y, z}?: { x: any; y: any; z: any; }): any' has no corresponding signature in '({x, y, c}: { x: any; y: any; c: any; }) => void' -!!! error TS2420: Types of parameters '__0' and '__0' are incompatible. -!!! error TS2420: Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. -!!! error TS2420: Property 'z' is missing in type '{ x: any; y: any; c: any; }'. +!!! error TS2420: Types of parameters '__0' and '__0' are incompatible. +!!! error TS2420: Type '{ x: any; y: any; c: any; }' is not assignable to type '{ x: any; y: any; z: any; }'. +!!! error TS2420: Property 'z' is missing in type '{ x: any; y: any; c: any; }'. d3([a, b, c]?) { } // Error, binding pattern can't be optional in implementation signature ~~~~~~~~~~ !!! error TS2463: A binding pattern parameter cannot be optional in an implementation signature. diff --git a/tests/baselines/reference/errorElaboration.errors.txt b/tests/baselines/reference/errorElaboration.errors.txt index 42903f7fa04..94742d7d98b 100644 --- a/tests/baselines/reference/errorElaboration.errors.txt +++ b/tests/baselines/reference/errorElaboration.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/errorElaboration.ts(12,5): error TS2345: Argument of type '() => Container>' is not assignable to parameter of type '() => Container>'. - Signature '(): Container>' has no corresponding signature in '() => Container>' - Type 'Container>' is not assignable to type 'Container>'. - Type 'Ref' is not assignable to type 'Ref'. - Type 'string' is not assignable to type 'number'. + Type 'Container>' is not assignable to type 'Container>'. + Type 'Ref' is not assignable to type 'Ref'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/errorElaboration.ts (1 errors) ==== @@ -20,8 +19,7 @@ tests/cases/compiler/errorElaboration.ts(12,5): error TS2345: Argument of type ' foo(a); ~ !!! error TS2345: Argument of type '() => Container>' is not assignable to parameter of type '() => Container>'. -!!! error TS2345: Signature '(): Container>' has no corresponding signature in '() => Container>' -!!! error TS2345: Type 'Container>' is not assignable to type 'Container>'. -!!! error TS2345: Type 'Ref' is not assignable to type 'Ref'. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'Container>' is not assignable to type 'Container>'. +!!! error TS2345: Type 'Ref' is not assignable to type 'Ref'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt b/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt index 8fbd4052bf9..403e79b8742 100644 --- a/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt +++ b/tests/baselines/reference/errorOnContextuallyTypedReturnType.errors.txt @@ -1,6 +1,5 @@ tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(1,5): error TS2322: Type '() => void' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'boolean'. + Type 'void' is not assignable to type 'boolean'. tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(2,37): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. @@ -8,8 +7,7 @@ tests/cases/compiler/errorOnContextuallyTypedReturnType.ts(2,37): error TS2355: var n1: () => boolean = function () { }; // expect an error here ~~ !!! error TS2322: Type '() => void' is not assignable to type '() => boolean'. -!!! error TS2322: Signature '(): boolean' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'boolean'. +!!! error TS2322: Type 'void' is not assignable to type 'boolean'. var n2: () => boolean = function ():boolean { }; // expect an error here ~~~~~~~ !!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. diff --git a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt index 6cacd56eb17..12478442472 100644 --- a/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt +++ b/tests/baselines/reference/everyTypeWithAnnotationAndInvalidInitializer.errors.txt @@ -16,26 +16,21 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd Types of property 'id' are incompatible. Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(46,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. - Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(47,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. - Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(48,5): error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. - Signature '(x: string): number' has no corresponding signature in '(x: string) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(50,5): error TS2322: Type 'typeof N' is not assignable to type 'typeof M'. Types of property 'A' are incompatible. Type 'typeof N.A' is not assignable to type 'typeof M.A'. - Signature 'new (): A' has no corresponding signature in 'typeof A' - Type 'N.A' is not assignable to type 'M.A'. - Property 'name' is missing in type 'A'. + Type 'N.A' is not assignable to type 'M.A'. + Property 'name' is missing in type 'A'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(51,5): error TS2322: Type 'N.A' is not assignable to type 'M.A'. tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts(52,5): error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: number) => string'. - Signature '(x: number): string' has no corresponding signature in '(x: number) => boolean' - Type 'boolean' is not assignable to type 'string'. + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAndInvalidInitializer.ts (15 errors) ==== @@ -113,36 +108,31 @@ tests/cases/conformance/statements/VariableStatements/everyTypeWithAnnotationAnd var aFunction: typeof F = F2; ~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. -!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var anOtherFunction: (x: string) => number = F2; ~~~~~~~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: string) => number'. -!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: number) => boolean' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var aLambda: typeof F = (x) => 'a string'; ~~~~~~~ !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: string) => number'. -!!! error TS2322: Signature '(x: string): number' has no corresponding signature in '(x: string) => string' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var aModule: typeof M = N; ~~~~~~~ !!! error TS2322: Type 'typeof N' is not assignable to type 'typeof M'. !!! error TS2322: Types of property 'A' are incompatible. !!! error TS2322: Type 'typeof N.A' is not assignable to type 'typeof M.A'. -!!! error TS2322: Signature 'new (): A' has no corresponding signature in 'typeof A' -!!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. -!!! error TS2322: Property 'name' is missing in type 'A'. +!!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. +!!! error TS2322: Property 'name' is missing in type 'A'. var aClassInModule: M.A = new N.A(); ~~~~~~~~~~~~~~ !!! error TS2322: Type 'N.A' is not assignable to type 'M.A'. var aFunctionInModule: typeof M.F2 = F2; ~~~~~~~~~~~~~~~~~ !!! error TS2322: Type '(x: number) => boolean' is not assignable to type '(x: number) => string'. -!!! error TS2322: Signature '(x: number): string' has no corresponding signature in '(x: number) => boolean' -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt index 448851640cd..a44c95377dc 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType2.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(7,7): error TS2420: Class 'D' incorrectly implements interface 'C'. Types of property 'bar' are incompatible. Type '() => string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(12,5): error TS2322: Type 'number' is not assignable to type 'string'. tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'. @@ -19,8 +18,7 @@ tests/cases/compiler/extendAndImplementTheSameBaseType2.ts(16,5): error TS2322: !!! error TS2420: Class 'D' incorrectly implements interface 'C'. !!! error TS2420: Types of property 'bar' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => number'. -!!! error TS2420: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Type 'string' is not assignable to type 'number'. baz() { } } diff --git a/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt b/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt index ca0c6bb9dca..e56b58a268d 100644 --- a/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt +++ b/tests/baselines/reference/fixingTypeParametersRepeatedly2.errors.txt @@ -1,10 +1,8 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(11,27): error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. - Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' - Type 'Base' is not assignable to type 'Derived'. - Property 'toBase' is missing in type 'Base'. + Type 'Base' is not assignable to type 'Derived'. + Property 'toBase' is missing in type 'Base'. tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. - Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' - Type 'Base' is not assignable to type 'Derived'. + Type 'Base' is not assignable to type 'Derived'. ==== tests/cases/compiler/fixingTypeParametersRepeatedly2.ts (2 errors) ==== @@ -21,9 +19,8 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Ar var result = foo(derived, d => d.toBase()); ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. -!!! error TS2345: Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' -!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. -!!! error TS2345: Property 'toBase' is missing in type 'Base'. +!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. +!!! error TS2345: Property 'toBase' is missing in type 'Base'. // bar should type check just like foo. // The same error should be observed in both cases. @@ -32,5 +29,4 @@ tests/cases/compiler/fixingTypeParametersRepeatedly2.ts(17,27): error TS2345: Ar var result = bar(derived, d => d.toBase()); ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(d: Derived) => Base' is not assignable to parameter of type '(p: Derived) => Derived'. -!!! error TS2345: Signature '(p: Derived): Derived' has no corresponding signature in '(d: Derived) => Base' -!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. \ No newline at end of file +!!! error TS2345: Type 'Base' is not assignable to type 'Derived'. \ No newline at end of file diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt index 85c04fffdd0..24dcb4dee53 100644 --- a/tests/baselines/reference/for-of30.errors.txt +++ b/tests/baselines/reference/for-of30.errors.txt @@ -1,11 +1,10 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => StringIterator' is not assignable to type '() => Iterator'. - Signature '(): Iterator' has no corresponding signature in '() => StringIterator' - Type 'StringIterator' is not assignable to type 'Iterator'. - Types of property 'return' are incompatible. - Type 'number' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'return' are incompatible. + Type 'number' is not assignable to type '(value?: any) => IteratorResult'. + Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' ==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ==== @@ -14,11 +13,10 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => StringIterator' -!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'return' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'return' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' class StringIterator { next() { diff --git a/tests/baselines/reference/for-of31.errors.txt b/tests/baselines/reference/for-of31.errors.txt index 111235d2f57..6d5f6e816be 100644 --- a/tests/baselines/reference/for-of31.errors.txt +++ b/tests/baselines/reference/for-of31.errors.txt @@ -1,13 +1,11 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => StringIterator' is not assignable to type '() => Iterator'. - Signature '(): Iterator' has no corresponding signature in '() => StringIterator' - Type 'StringIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: string; }' - Type '{ value: string; }' is not assignable to type 'IteratorResult'. - Property 'done' is missing in type '{ value: string; }'. + Type 'StringIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. + Type '{ value: string; }' is not assignable to type 'IteratorResult'. + Property 'done' is missing in type '{ value: string; }'. ==== tests/cases/conformance/es6/for-ofStatements/for-of31.ts (1 errors) ==== @@ -16,13 +14,11 @@ tests/cases/conformance/es6/for-ofStatements/for-of31.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => StringIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => StringIterator' -!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: string; }' -!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'. -!!! error TS2322: Property 'done' is missing in type '{ value: string; }'. +!!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '() => { value: string; }' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Type '{ value: string; }' is not assignable to type 'IteratorResult'. +!!! error TS2322: Property 'done' is missing in type '{ value: string; }'. class StringIterator { next() { diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt index baf2af9794b..bfcb8bc8a3b 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt +++ b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt @@ -5,15 +5,13 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(23,14): error TS2345: Argument of type 'Function' is not assignable to parameter of type '(x: string) => string'. Signature '(x: string): string' has no corresponding signature in 'Function' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(24,15): error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in '(x: string[]) => string[]' - Types of parameters 'x' and 'x' are incompatible. - Type 'string[]' is not assignable to type 'string'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string[]' is not assignable to type 'string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(25,15): error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. Signature '(x: string): string' has no corresponding signature in 'typeof C' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(26,15): error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. Signature '(x: string): string' has no corresponding signature in 'new (x: string) => string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(28,16): error TS2345: Argument of type '(x: U, y: V) => U' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in '(x: U, y: V) => U' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(29,16): error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. Signature '(x: string): string' has no corresponding signature in 'typeof C2' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(30,16): error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. @@ -63,9 +61,8 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r2 = foo2((x: string[]) => x); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '(x: string[]) => string[]' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string[]' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string[]' is not assignable to type 'string'. var r6 = foo2(C); ~ !!! error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. @@ -78,7 +75,6 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r11 = foo2((x: U, y: V) => x); ~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: U, y: V) => U' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '(x: U, y: V) => U' var r13 = foo2(C2); ~~ !!! error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. diff --git a/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt b/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt index 6ac40bcf2d9..6a3a7998f09 100644 --- a/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt +++ b/tests/baselines/reference/functionExpressionContextualTyping2.errors.txt @@ -1,7 +1,6 @@ tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping2.ts(11,1): error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '((n: number, s: string) => number) | ((n: number, s: string) => string)'. Type '(foo: number, bar: string) => boolean' is not assignable to type '(n: number, s: string) => string'. - Signature '(n: number, s: string): string' has no corresponding signature in '(foo: number, bar: string) => boolean' - Type 'boolean' is not assignable to type 'string'. + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/conformance/expressions/contextualTyping/functionExpressionContextualTyping2.ts (1 errors) ==== @@ -19,5 +18,4 @@ tests/cases/conformance/expressions/contextualTyping/functionExpressionContextua ~~ !!! error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '((n: number, s: string) => number) | ((n: number, s: string) => string)'. !!! error TS2322: Type '(foo: number, bar: string) => boolean' is not assignable to type '(n: number, s: string) => string'. -!!! error TS2322: Signature '(n: number, s: string): string' has no corresponding signature in '(foo: number, bar: string) => boolean' -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt index 86f89e94b04..86c4728dda2 100644 --- a/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt +++ b/tests/baselines/reference/functionSignatureAssignmentCompat1.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. - Signature '(eventEmitter: number, buffer: string): void' has no corresponding signature in '(delimiter?: string) => ParserFunc' - Types of parameters 'delimiter' and 'eventEmitter' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'delimiter' and 'eventEmitter' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/functionSignatureAssignmentCompat1.ts (1 errors) ==== @@ -17,7 +16,6 @@ tests/cases/compiler/functionSignatureAssignmentCompat1.ts(10,5): error TS2322: var d: ParserFunc = parsers.readline; // not ok ~ !!! error TS2322: Type '(delimiter?: string) => ParserFunc' is not assignable to type 'ParserFunc'. -!!! error TS2322: Signature '(eventEmitter: number, buffer: string): void' has no corresponding signature in '(delimiter?: string) => ParserFunc' -!!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'delimiter' and 'eventEmitter' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var e: ParserFunc = parsers.readline(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck25.errors.txt b/tests/baselines/reference/generatorTypeCheck25.errors.txt index 65aa94001b5..8d414c7c471 100644 --- a/tests/baselines/reference/generatorTypeCheck25.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck25.errors.txt @@ -1,17 +1,14 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterable'. - Signature '(): Iterable' has no corresponding signature in '() => IterableIterator' - Type 'IterableIterator' is not assignable to type 'Iterable'. - Types of property '[Symbol.iterator]' are incompatible. - Type '() => IterableIterator' is not assignable to type '() => Iterator'. - Signature '(): Iterator' has no corresponding signature in '() => IterableIterator' - Type 'IterableIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'Bar | Baz' is not assignable to type 'Foo'. - Type 'Baz' is not assignable to type 'Foo'. - Property 'x' is missing in type 'Baz'. + Type 'IterableIterator' is not assignable to type 'Iterable'. + Types of property '[Symbol.iterator]' are incompatible. + Type '() => IterableIterator' is not assignable to type '() => Iterator'. + Type 'IterableIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'Bar | Baz' is not assignable to type 'Foo'. + Type 'Baz' is not assignable to type 'Foo'. + Property 'x' is missing in type 'Baz'. ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts (1 errors) ==== @@ -21,19 +18,16 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck25.ts(4,5): error var g3: () => Iterable = function* () { ~~ !!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterable'. -!!! error TS2322: Signature '(): Iterable' has no corresponding signature in '() => IterableIterator' -!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterable'. -!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. -!!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => IterableIterator' -!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. -!!! error TS2322: Type 'Baz' is not assignable to type 'Foo'. -!!! error TS2322: Property 'x' is missing in type 'Baz'. +!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterable'. +!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. +!!! error TS2322: Type '() => IterableIterator' is not assignable to type '() => Iterator'. +!!! error TS2322: Type 'IterableIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'Bar | Baz' is not assignable to type 'Foo'. +!!! error TS2322: Type 'Baz' is not assignable to type 'Foo'. +!!! error TS2322: Property 'x' is missing in type 'Baz'. yield; yield new Bar; yield new Baz; diff --git a/tests/baselines/reference/generatorTypeCheck8.errors.txt b/tests/baselines/reference/generatorTypeCheck8.errors.txt index abd1db46bd1..cedfecda60b 100644 --- a/tests/baselines/reference/generatorTypeCheck8.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck8.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error TS2322: Type 'IterableIterator' is not assignable to type 'BadGenerator'. Types of property 'next' are incompatible. Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' - Type 'IteratorResult' is not assignable to type 'IteratorResult'. - Type 'string' is not assignable to type 'number'. + Type 'IteratorResult' is not assignable to type 'IteratorResult'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts (1 errors) ==== @@ -13,6 +12,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck8.ts(2,17): error !!! error TS2322: Type 'IterableIterator' is not assignable to type 'BadGenerator'. !!! error TS2322: Types of property 'next' are incompatible. !!! error TS2322: Type '(value?: any) => IteratorResult' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '(value?: any) => IteratorResult' -!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2322: Type 'IteratorResult' is not assignable to type 'IteratorResult'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt index 3b52ed1e597..f335319cafd 100644 --- a/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt +++ b/tests/baselines/reference/genericAssignmentCompatWithInterfaces1.errors.txt @@ -3,9 +3,8 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(12,5): error TS23 Type 'A' is not assignable to type 'Comparable'. Types of property 'compareTo' are incompatible. Type '(other: number) => number' is not assignable to type '(other: string) => number'. - Signature '(other: string): number' has no corresponding signature in '(other: number) => number' - Types of parameters 'other' and 'other' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'other' and 'other' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(13,5): error TS2322: Type '{ x: A; }' is not assignable to type 'I'. Types of property 'x' are incompatible. Type 'A' is not assignable to type 'Comparable'. @@ -36,9 +35,8 @@ tests/cases/compiler/genericAssignmentCompatWithInterfaces1.ts(17,5): error TS23 !!! error TS2322: Type 'A' is not assignable to type 'Comparable'. !!! error TS2322: Types of property 'compareTo' are incompatible. !!! error TS2322: Type '(other: number) => number' is not assignable to type '(other: string) => number'. -!!! error TS2322: Signature '(other: string): number' has no corresponding signature in '(other: number) => number' -!!! error TS2322: Types of parameters 'other' and 'other' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'other' and 'other' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. var a2: I = function (): { x: A } { ~~ !!! error TS2322: Type '{ x: A; }' is not assignable to type 'I'. diff --git a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt index a6c6de7ffa7..428ebecf5b0 100644 --- a/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt +++ b/tests/baselines/reference/genericCallToOverloadedMethodWithOverloadedArguments.errors.txt @@ -1,19 +1,15 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(24,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(53,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(69,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts(85,38): error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. - Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'boolean'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverloadedMethodWithOverloadedArguments.ts (4 errors) ==== @@ -43,9 +39,8 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -77,9 +72,8 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -98,9 +92,8 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. } ////////////////////////////////////// @@ -119,8 +112,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallToOverl var newPromise = numPromise.then(testFunction); ~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' is not assignable to parameter of type '(x: number) => Promise'. -!!! error TS2345: Signature '(x: number): Promise' has no corresponding signature in '{ (n: number): Promise; (s: string): Promise; (b: boolean): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'boolean'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'boolean'. } \ No newline at end of file diff --git a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt index 451a9e2900d..a014ef85b6c 100644 --- a/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt +++ b/tests/baselines/reference/genericCallWithConstructorTypedArguments5.errors.txt @@ -1,11 +1,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts(11,14): error TS2345: Argument of type '{ cb: new (x: T, y: T) => string; }' is not assignable to parameter of type '{ cb: new (t: any) => string; }'. Types of property 'cb' are incompatible. Type 'new (x: T, y: T) => string' is not assignable to type 'new (t: any) => string'. - Signature 'new (t: any): string' has no corresponding signature in 'new (x: T, y: T) => string' tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts(13,14): error TS2345: Argument of type '{ cb: new (x: string, y: number) => string; }' is not assignable to parameter of type '{ cb: new (t: string) => string; }'. Types of property 'cb' are incompatible. Type 'new (x: string, y: number) => string' is not assignable to type 'new (t: string) => string'. - Signature 'new (t: string): string' has no corresponding signature in 'new (x: string, y: number) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstructorTypedArguments5.ts (2 errors) ==== @@ -24,14 +22,12 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithCon !!! error TS2345: Argument of type '{ cb: new (x: T, y: T) => string; }' is not assignable to parameter of type '{ cb: new (t: any) => string; }'. !!! error TS2345: Types of property 'cb' are incompatible. !!! error TS2345: Type 'new (x: T, y: T) => string' is not assignable to type 'new (t: any) => string'. -!!! error TS2345: Signature 'new (t: any): string' has no corresponding signature in 'new (x: T, y: T) => string' var arg3: { cb: new (x: string, y: number) => string }; var r3 = foo(arg3); // error ~~~~ !!! error TS2345: Argument of type '{ cb: new (x: string, y: number) => string; }' is not assignable to parameter of type '{ cb: new (t: string) => string; }'. !!! error TS2345: Types of property 'cb' are incompatible. !!! error TS2345: Type 'new (x: string, y: number) => string' is not assignable to type 'new (t: string) => string'. -!!! error TS2345: Signature 'new (t: string): string' has no corresponding signature in 'new (x: string, y: number) => string' function foo2(arg: { cb: new(t: T, t2: T) => U }) { return new arg.cb(null, null); diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt index 4677d24164d..c264058ad9f 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments2.errors.txt @@ -3,21 +3,18 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(15,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(16,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(25,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. - Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' - Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'RegExp'. + Types of parameters 'a' and 'x' are incompatible. + Type 'T' is not assignable to type 'Date'. + Type 'RegExp' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'RegExp'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(37,36): error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. - Signature '(x: E): E' has no corresponding signature in '(x: E) => F' - Type 'F' is not assignable to type 'E'. + Type 'F' is not assignable to type 'E'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(50,21): error TS2345: Argument of type 'Date' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(51,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(60,23): error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. - Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' - Types of parameters 'a' and 'x' are incompatible. - Type 'T' is not assignable to type 'Date'. - Type 'RegExp' is not assignable to type 'Date'. + Types of parameters 'a' and 'x' are incompatible. + Type 'T' is not assignable to type 'Date'. + Type 'RegExp' is not assignable to type 'Date'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,51): error TS2304: Cannot find name 'U'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments2.ts(67,57): error TS2304: Cannot find name 'U'. @@ -57,11 +54,10 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo2((a: T) => a, (b: T) => b); // error ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. -!!! error TS2345: Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' -!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. +!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. +!!! error TS2345: Type 'T' is not assignable to type 'Date'. +!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'RegExp'. var r7b = foo2((a) => a, (b) => b); // valid, T is inferred to be Date } @@ -76,8 +72,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo3(E.A, (x) => E.A, (x) => F.A); // error ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: E) => F' is not assignable to parameter of type '(x: E) => E'. -!!! error TS2345: Signature '(x: E): E' has no corresponding signature in '(x: E) => F' -!!! error TS2345: Type 'F' is not assignable to type 'E'. +!!! error TS2345: Type 'F' is not assignable to type 'E'. } module TU { @@ -107,10 +102,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r7 = foo2((a: T) => a, (b: T) => b); ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: T) => T' is not assignable to parameter of type '(x: Date) => Date'. -!!! error TS2345: Signature '(x: Date): Date' has no corresponding signature in '(a: T) => T' -!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. -!!! error TS2345: Type 'T' is not assignable to type 'Date'. -!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. +!!! error TS2345: Types of parameters 'a' and 'x' are incompatible. +!!! error TS2345: Type 'T' is not assignable to type 'Date'. +!!! error TS2345: Type 'RegExp' is not assignable to type 'Date'. var r7b = foo2((a) => a, (b) => b); } diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt index cfee8e336b3..52c5e03912e 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt @@ -1,7 +1,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(32,11): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(y: string) => string' is not a valid type argument because it is not a supertype of candidate '(a: string) => boolean'. - Signature '(y: string): string' has no corresponding signature in '(a: string) => boolean' - Type 'boolean' is not assignable to type 'string'. + Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(33,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. Signature '(n: Object): number' has no corresponding signature in 'Number' @@ -43,8 +42,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen ~~~~ !!! error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. !!! error TS2453: Type argument candidate '(y: string) => string' is not a valid type argument because it is not a supertype of candidate '(a: string) => boolean'. -!!! error TS2453: Signature '(y: string): string' has no corresponding signature in '(a: string) => boolean' -!!! error TS2453: Type 'boolean' is not assignable to type 'string'. +!!! error TS2453: Type 'boolean' is not assignable to type 'string'. var r12 = foo2(x, (a1: (y: string) => boolean) => (n: Object) => 1, (a2: (z: string) => boolean) => 2); // error ~~~~ !!! error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. diff --git a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt index 230311a6642..80bcf12494a 100644 --- a/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithOverloadedConstructorTypedArguments2.errors.txt @@ -1,5 +1,4 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedConstructorTypedArguments2.ts(31,20): error TS2345: Argument of type 'new (x: T, y: T) => string' is not assignable to parameter of type '{ new (x: any): string; new (x: any, y?: any): string; }'. - Signature 'new (x: any): string' has no corresponding signature in 'new (x: T, y: T) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedConstructorTypedArguments2.ts (1 errors) ==== @@ -36,7 +35,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOve var r10 = foo6(b); // error ~ !!! error TS2345: Argument of type 'new (x: T, y: T) => string' is not assignable to parameter of type '{ new (x: any): string; new (x: any, y?: any): string; }'. -!!! error TS2345: Signature 'new (x: any): string' has no corresponding signature in 'new (x: T, y: T) => string' function foo7(x:T, cb: { new(x: T): string; new(x: T, y?: T): string }) { return cb; diff --git a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt index 0e2481feee8..32fe6a09344 100644 --- a/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt +++ b/tests/baselines/reference/genericCallWithOverloadedFunctionTypedArguments2.errors.txt @@ -1,5 +1,4 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedFunctionTypedArguments2.ts(28,20): error TS2345: Argument of type '(x: T, y: T) => string' is not assignable to parameter of type '{ (x: any): string; (x: any, y?: any): string; }'. - Signature '(x: any): string' has no corresponding signature in '(x: T, y: T) => string' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOverloadedFunctionTypedArguments2.ts (1 errors) ==== @@ -33,7 +32,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithOve var r10 = foo6((x: T, y: T) => ''); // error ~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, y: T) => string' is not assignable to parameter of type '{ (x: any): string; (x: any, y?: any): string; }'. -!!! error TS2345: Signature '(x: any): string' has no corresponding signature in '(x: T, y: T) => string' function foo7(x:T, cb: { (x: T): string; (x: T, y?: T): string }) { return cb; diff --git a/tests/baselines/reference/genericCallWithTupleType.errors.txt b/tests/baselines/reference/genericCallWithTupleType.errors.txt index 518a4714247..d03f8d5e68a 100644 --- a/tests/baselines/reference/genericCallWithTupleType.errors.txt +++ b/tests/baselines/reference/genericCallWithTupleType.errors.txt @@ -1,10 +1,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(12,1): error TS2322: Type '[string, number, boolean, boolean]' is not assignable to type '[string, number]'. Types of property 'pop' are incompatible. Type '() => string | number | boolean' is not assignable to type '() => string | number'. - Signature '(): string | number' has no corresponding signature in '() => string | number | boolean' - Type 'string | number | boolean' is not assignable to type 'string | number'. - Type 'boolean' is not assignable to type 'string | number'. - Type 'boolean' is not assignable to type 'number'. + Type 'string | number | boolean' is not assignable to type 'string | number'. + Type 'boolean' is not assignable to type 'string | number'. + Type 'boolean' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(14,1): error TS2322: Type '{ a: string; }' is not assignable to type 'string | number'. Type '{ a: string; }' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTupleType.ts(22,1): error TS2322: Type '[number, string]' is not assignable to type '[string, number]'. @@ -34,10 +33,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithTup !!! error TS2322: Type '[string, number, boolean, boolean]' is not assignable to type '[string, number]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => string | number | boolean' is not assignable to type '() => string | number'. -!!! error TS2322: Signature '(): string | number' has no corresponding signature in '() => string | number | boolean' -!!! error TS2322: Type 'string | number | boolean' is not assignable to type 'string | number'. -!!! error TS2322: Type 'boolean' is not assignable to type 'string | number'. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2322: Type 'string | number | boolean' is not assignable to type 'string | number'. +!!! error TS2322: Type 'boolean' is not assignable to type 'string | number'. +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. var e3 = i1.tuple1[2]; // {} i1.tuple1[3] = { a: "string" }; ~~~~~~~~~~~~ diff --git a/tests/baselines/reference/genericCombinators2.errors.txt b/tests/baselines/reference/genericCombinators2.errors.txt index 3dcc1b3c873..d590f1030c3 100644 --- a/tests/baselines/reference/genericCombinators2.errors.txt +++ b/tests/baselines/reference/genericCombinators2.errors.txt @@ -1,10 +1,8 @@ tests/cases/compiler/genericCombinators2.ts(15,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. - Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' - Type 'string' is not assignable to type 'Date'. - Property 'toDateString' is missing in type 'String'. + Type 'string' is not assignable to type 'Date'. + Property 'toDateString' is missing in type 'String'. tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. - Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' - Type 'string' is not assignable to type 'Date'. + Type 'string' is not assignable to type 'Date'. ==== tests/cases/compiler/genericCombinators2.ts (2 errors) ==== @@ -25,11 +23,9 @@ tests/cases/compiler/genericCombinators2.ts(16,43): error TS2345: Argument of ty var r5a = _.map(c2, (x, y) => { return x.toFixed() }); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. -!!! error TS2345: Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Date'. -!!! error TS2345: Property 'toDateString' is missing in type 'String'. +!!! error TS2345: Type 'string' is not assignable to type 'Date'. +!!! error TS2345: Property 'toDateString' is missing in type 'String'. var r5b = _.map(c2, rf1); ~~~ !!! error TS2345: Argument of type '(x: number, y: string) => string' is not assignable to parameter of type '(x: number, y: string) => Date'. -!!! error TS2345: Signature '(x: number, y: string): Date' has no corresponding signature in '(x: number, y: string) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file +!!! error TS2345: Type 'string' is not assignable to type 'Date'. \ No newline at end of file diff --git a/tests/baselines/reference/genericSpecializations3.errors.txt b/tests/baselines/reference/genericSpecializations3.errors.txt index abfdf7a6640..ccaa839f9d0 100644 --- a/tests/baselines/reference/genericSpecializations3.errors.txt +++ b/tests/baselines/reference/genericSpecializations3.errors.txt @@ -1,21 +1,18 @@ tests/cases/compiler/genericSpecializations3.ts(8,7): error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericSpecializations3.ts(28,1): error TS2322: Type 'StringFoo2' is not assignable to type 'IntFoo'. Types of property 'foo' are incompatible. Type '(x: string) => string' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. Types of property 'foo' are incompatible. Type '(x: number) => number' is not assignable to type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in '(x: number) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/genericSpecializations3.ts (3 errors) ==== @@ -31,9 +28,8 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2420: Class 'IntFooBad' incorrectly implements interface 'IFoo'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => string' is not assignable to type '(x: number) => number'. -!!! error TS2420: Signature '(x: number): number' has no corresponding signature in '(x: string) => string' -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'number'. foo(x: string): string { return null; } } @@ -58,17 +54,15 @@ tests/cases/compiler/genericSpecializations3.ts(29,1): error TS2322: Type 'IntFo !!! error TS2322: Type 'StringFoo2' is not assignable to type 'IntFoo'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => string' is not assignable to type '(x: number) => number'. -!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '(x: string) => string' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. stringFoo2 = intFoo; // error ~~~~~~~~~~ !!! error TS2322: Type 'IntFoo' is not assignable to type 'StringFoo2'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: number) => number' is not assignable to type '(x: string) => string'. -!!! error TS2322: Signature '(x: string): string' has no corresponding signature in '(x: number) => number' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. class StringFoo3 implements IFoo { // error diff --git a/tests/baselines/reference/genericTypeAssertions2.errors.txt b/tests/baselines/reference/genericTypeAssertions2.errors.txt index 72bdf8a23a6..eda4c83646c 100644 --- a/tests/baselines/reference/genericTypeAssertions2.errors.txt +++ b/tests/baselines/reference/genericTypeAssertions2.errors.txt @@ -1,9 +1,8 @@ tests/cases/compiler/genericTypeAssertions2.ts(10,5): error TS2322: Type 'B' is not assignable to type 'A'. Types of property 'foo' are incompatible. Type '(x: string) => void' is not assignable to type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/genericTypeAssertions2.ts(11,5): error TS2322: Type 'A' is not assignable to type 'B'. Property 'bar' is missing in type 'A'. tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither type 'undefined[]' nor type 'A' is assignable to the other. @@ -25,9 +24,8 @@ tests/cases/compiler/genericTypeAssertions2.ts(13,21): error TS2352: Neither typ !!! error TS2322: Type 'B' is not assignable to type 'A'. !!! error TS2322: Types of property 'foo' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type '(x: number) => void'. -!!! error TS2322: Signature '(x: number): void' has no corresponding signature in '(x: string) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var r3: B = >new B(); // error ~~ !!! error TS2322: Type 'A' is not assignable to type 'B'. diff --git a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt index d8bd78992a7..0fe15afcf33 100644 --- a/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt +++ b/tests/baselines/reference/genericTypeWithNonGenericBaseMisMatch.errors.txt @@ -1,20 +1,18 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(4,7): error TS2420: Class 'X' incorrectly implements interface 'I'. Types of property 'f' are incompatible. Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. - Signature '(a: { a: number; }): void' has no corresponding signature in '(a: T) => void' - Types of parameters 'a' and 'a' are incompatible. - Type 'T' is not assignable to type '{ a: number; }'. - Type '{ a: string; }' is not assignable to type '{ a: number; }'. - Types of property 'a' are incompatible. - Type 'string' is not assignable to type 'number'. -tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. - Types of property 'f' are incompatible. - Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. - Signature '(a: { a: number; }): void' has no corresponding signature in '(a: { a: string; }) => void' - Types of parameters 'a' and 'a' are incompatible. + Types of parameters 'a' and 'a' are incompatible. + Type 'T' is not assignable to type '{ a: number; }'. Type '{ a: string; }' is not assignable to type '{ a: number; }'. Types of property 'a' are incompatible. Type 'string' is not assignable to type 'number'. +tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. + Types of property 'f' are incompatible. + Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. + Types of parameters 'a' and 'a' are incompatible. + Type '{ a: string; }' is not assignable to type '{ a: number; }'. + Types of property 'a' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts (2 errors) ==== @@ -26,12 +24,11 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2420: Class 'X' incorrectly implements interface 'I'. !!! error TS2420: Types of property 'f' are incompatible. !!! error TS2420: Type '(a: T) => void' is not assignable to type '(a: { a: number; }) => void'. -!!! error TS2420: Signature '(a: { a: number; }): void' has no corresponding signature in '(a: T) => void' -!!! error TS2420: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2420: Type 'T' is not assignable to type '{ a: number; }'. -!!! error TS2420: Type '{ a: string; }' is not assignable to type '{ a: number; }'. -!!! error TS2420: Types of property 'a' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2420: Type 'T' is not assignable to type '{ a: number; }'. +!!! error TS2420: Type '{ a: string; }' is not assignable to type '{ a: number; }'. +!!! error TS2420: Types of property 'a' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'number'. f(a: T): void { } } var x = new X<{ a: string }>(); @@ -40,9 +37,8 @@ tests/cases/compiler/genericTypeWithNonGenericBaseMisMatch.ts(8,5): error TS2322 !!! error TS2322: Type 'X<{ a: string; }>' is not assignable to type 'I'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(a: { a: string; }) => void' is not assignable to type '(a: { a: number; }) => void'. -!!! error TS2322: Signature '(a: { a: number; }): void' has no corresponding signature in '(a: { a: string; }) => void' -!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type '{ a: string; }' is not assignable to type '{ a: number; }'. -!!! error TS2322: Types of property 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2322: Type '{ a: string; }' is not assignable to type '{ a: number; }'. +!!! error TS2322: Types of property 'a' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/generics4.errors.txt b/tests/baselines/reference/generics4.errors.txt index 93828628bd2..06bfa122901 100644 --- a/tests/baselines/reference/generics4.errors.txt +++ b/tests/baselines/reference/generics4.errors.txt @@ -2,8 +2,7 @@ tests/cases/compiler/generics4.ts(7,1): error TS2322: Type 'C' is not assigna Type 'Y' is not assignable to type 'X'. Types of property 'f' are incompatible. Type '() => boolean' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => boolean' - Type 'boolean' is not assignable to type 'string'. + Type 'boolean' is not assignable to type 'string'. ==== tests/cases/compiler/generics4.ts (1 errors) ==== @@ -19,5 +18,4 @@ tests/cases/compiler/generics4.ts(7,1): error TS2322: Type 'C' is not assigna !!! error TS2322: Type 'Y' is not assignable to type 'X'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '() => boolean' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => boolean' -!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file +!!! error TS2322: Type 'boolean' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt index 9699ab80862..7a128b87764 100644 --- a/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt +++ b/tests/baselines/reference/implementGenericWithMismatchedTypes.errors.txt @@ -1,14 +1,12 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(7,7): error TS2420: Class 'C' incorrectly implements interface 'IFoo'. Types of property 'foo' are incompatible. Type '(x: string) => number' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: string) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'T'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'T'. tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. Types of property 'foo' are incompatible. Type '(x: Tstring) => number' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: Tstring) => number' - Type 'number' is not assignable to type 'T'. + Type 'number' is not assignable to type 'T'. ==== tests/cases/compiler/implementGenericWithMismatchedTypes.ts (2 errors) ==== @@ -23,9 +21,8 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: !!! error TS2420: Class 'C' incorrectly implements interface 'IFoo'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: string) => number' is not assignable to type '(x: T) => T'. -!!! error TS2420: Signature '(x: T): T' has no corresponding signature in '(x: string) => number' -!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2420: Type 'string' is not assignable to type 'T'. +!!! error TS2420: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2420: Type 'string' is not assignable to type 'T'. foo(x: string): number { return null; } @@ -39,8 +36,7 @@ tests/cases/compiler/implementGenericWithMismatchedTypes.ts(16,7): error TS2420: !!! error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. !!! error TS2420: Types of property 'foo' are incompatible. !!! error TS2420: Type '(x: Tstring) => number' is not assignable to type '(x: T) => T'. -!!! error TS2420: Signature '(x: T): T' has no corresponding signature in '(x: Tstring) => number' -!!! error TS2420: Type 'number' is not assignable to type 'T'. +!!! error TS2420: Type 'number' is not assignable to type 'T'. foo(x: Tstring): number { return null; } diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index eddd01cc979..2d6af3a74e2 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -1,14 +1,12 @@ tests/cases/compiler/incompatibleTypes.ts(5,7): error TS2420: Class 'C1' incorrectly implements interface 'IFoo1'. Types of property 'p1' are incompatible. Type '() => string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(15,7): error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. Types of property 'p1' are incompatible. Type '(n: number) => number' is not assignable to type '(s: string) => number'. - Signature '(s: string): number' has no corresponding signature in '(n: number) => number' - Types of parameters 'n' and 's' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'n' and 's' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/incompatibleTypes.ts(25,7): error TS2420: Class 'C3' incorrectly implements interface 'IFoo3'. Types of property 'p1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -19,8 +17,7 @@ tests/cases/compiler/incompatibleTypes.ts(33,7): error TS2420: Class 'C4' incorr tests/cases/compiler/incompatibleTypes.ts(42,5): error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. Types of property 'p1' are incompatible. Type '() => string' is not assignable to type '(s: string) => number'. - Signature '(s: string): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/incompatibleTypes.ts(49,7): error TS2345: Argument of type '{ e: number; f: number; }' is not assignable to parameter of type '{ c: { b: string; }; d: string; }'. Object literal may only specify known properties, and 'e' does not exist in type '{ c: { b: string; }; d: string; }'. tests/cases/compiler/incompatibleTypes.ts(66,47): error TS2322: Type '{ e: number; f: number; }' is not assignable to type '{ a: { a: string; }; b: string; }'. @@ -28,7 +25,6 @@ tests/cases/compiler/incompatibleTypes.ts(66,47): error TS2322: Type '{ e: numbe tests/cases/compiler/incompatibleTypes.ts(72,5): error TS2322: Type 'number' is not assignable to type '() => string'. Signature '(): string' has no corresponding signature in 'Number' tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. - Signature '(): any' has no corresponding signature in '(a: any) => number' ==== tests/cases/compiler/incompatibleTypes.ts (9 errors) ==== @@ -41,8 +37,7 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2420: Class 'C1' incorrectly implements interface 'IFoo1'. !!! error TS2420: Types of property 'p1' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => number'. -!!! error TS2420: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2420: Type 'string' is not assignable to type 'number'. +!!! error TS2420: Type 'string' is not assignable to type 'number'. public p1() { return "s"; } @@ -57,9 +52,8 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2420: Class 'C2' incorrectly implements interface 'IFoo2'. !!! error TS2420: Types of property 'p1' are incompatible. !!! error TS2420: Type '(n: number) => number' is not assignable to type '(s: string) => number'. -!!! error TS2420: Signature '(s: string): number' has no corresponding signature in '(n: number) => number' -!!! error TS2420: Types of parameters 'n' and 's' are incompatible. -!!! error TS2420: Type 'number' is not assignable to type 'string'. +!!! error TS2420: Types of parameters 'n' and 's' are incompatible. +!!! error TS2420: Type 'number' is not assignable to type 'string'. public p1(n:number) { return 0; } @@ -100,8 +94,7 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => !!! error TS2345: Argument of type 'C1' is not assignable to parameter of type 'IFoo2'. !!! error TS2345: Types of property 'p1' are incompatible. !!! error TS2345: Type '() => string' is not assignable to type '(s: string) => number'. -!!! error TS2345: Signature '(s: string): number' has no corresponding signature in '() => string' -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Type 'string' is not assignable to type 'number'. function of1(n: { a: { a: string; }; b: string; }): number; @@ -145,5 +138,4 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => var fp1: () =>any = a => 0; ~~~ !!! error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. -!!! error TS2322: Signature '(): any' has no corresponding signature in '(a: any) => number' \ No newline at end of file diff --git a/tests/baselines/reference/inheritance.errors.txt b/tests/baselines/reference/inheritance.errors.txt index eef06b4c961..c667e8b001e 100644 --- a/tests/baselines/reference/inheritance.errors.txt +++ b/tests/baselines/reference/inheritance.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/inheritance.ts(30,7): error TS2415: Class 'Baad' incorrectly extends base class 'Good'. Types of property 'g' are incompatible. Type '(n: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(n: number) => number' tests/cases/compiler/inheritance.ts(31,12): error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. @@ -40,7 +39,6 @@ tests/cases/compiler/inheritance.ts(31,12): error TS2425: Class 'Good' defines i !!! error TS2415: Class 'Baad' incorrectly extends base class 'Good'. !!! error TS2415: Types of property 'g' are incompatible. !!! error TS2415: Type '(n: number) => number' is not assignable to type '() => number'. -!!! error TS2415: Signature '(): number' has no corresponding signature in '(n: number) => number' public f(): number { return 0; } ~ !!! error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. diff --git a/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt b/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt index 6c67e28e2f9..0b7e00d95ce 100644 --- a/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt +++ b/tests/baselines/reference/inheritedModuleMembersForClodule.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/inheritedModuleMembersForClodule.ts(7,7): error TS2417: Class static side 'typeof D' incorrectly extends base class static side 'typeof C'. Types of property 'foo' are incompatible. Type '() => number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => number' - Type 'number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/inheritedModuleMembersForClodule.ts (1 errors) ==== @@ -17,8 +16,7 @@ tests/cases/compiler/inheritedModuleMembersForClodule.ts(7,7): error TS2417: Cla !!! error TS2417: Class static side 'typeof D' incorrectly extends base class static side 'typeof C'. !!! error TS2417: Types of property 'foo' are incompatible. !!! error TS2417: Type '() => number' is not assignable to type '() => string'. -!!! error TS2417: Signature '(): string' has no corresponding signature in '() => number' -!!! error TS2417: Type 'number' is not assignable to type 'string'. +!!! error TS2417: Type 'number' is not assignable to type 'string'. } module D { diff --git a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt index cca68d4ef96..080316f8daf 100644 --- a/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt +++ b/tests/baselines/reference/instanceMemberAssignsToClassPrototype.errors.txt @@ -1,6 +1,5 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/instanceMemberAssignsToClassPrototype.ts(7,9): error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'number'. + Type 'void' is not assignable to type 'number'. ==== tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/instanceMemberAssignsToClassPrototype.ts (1 errors) ==== @@ -13,8 +12,7 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclara C.prototype.bar = () => { } // error ~~~~~~~~~~~~~~~ !!! error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. -!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Type 'void' is not assignable to type 'number'. C.prototype.bar = (x) => x; // ok C.prototype.bar = (x: number) => 1; // ok return 1; diff --git a/tests/baselines/reference/intTypeCheck.errors.txt b/tests/baselines/reference/intTypeCheck.errors.txt index d9f3f021887..02592bedb69 100644 --- a/tests/baselines/reference/intTypeCheck.errors.txt +++ b/tests/baselines/reference/intTypeCheck.errors.txt @@ -66,8 +66,7 @@ tests/cases/compiler/intTypeCheck.ts(170,17): error TS2350: Only a void function tests/cases/compiler/intTypeCheck.ts(171,5): error TS2322: Type 'Base' is not assignable to type 'i6'. Signature '(): any' has no corresponding signature in 'Base' tests/cases/compiler/intTypeCheck.ts(173,5): error TS2322: Type '() => void' is not assignable to type 'i6'. - Signature '(): number' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'number'. + Type 'void' is not assignable to type 'number'. tests/cases/compiler/intTypeCheck.ts(176,5): error TS2322: Type 'boolean' is not assignable to type 'i6'. Signature '(): any' has no corresponding signature in 'Boolean' tests/cases/compiler/intTypeCheck.ts(176,21): error TS1109: Expression expected. @@ -382,8 +381,7 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj61: i6 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i6'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Type 'void' is not assignable to type 'number'. //var obj62: i6 = function foo() { }; var obj63: i6 = anyVar; var obj64: i6 = new anyVar; diff --git a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt index a1198d9fd37..237358b42de 100644 --- a/tests/baselines/reference/interfaceAssignmentCompat.errors.txt +++ b/tests/baselines/reference/interfaceAssignmentCompat.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(32,18): error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. - Signature '(a: IEye, b: IEye): number' has no corresponding signature in '(a: IFrenchEye, b: IFrenchEye) => number' - Types of parameters 'a' and 'a' are incompatible. - Type 'IFrenchEye' is not assignable to type 'IEye'. - Property 'color' is missing in type 'IFrenchEye'. + Types of parameters 'a' and 'a' are incompatible. + Type 'IFrenchEye' is not assignable to type 'IEye'. + Property 'color' is missing in type 'IFrenchEye'. tests/cases/compiler/interfaceAssignmentCompat.ts(37,29): error TS2339: Property '_map' does not exist on type 'typeof Color'. tests/cases/compiler/interfaceAssignmentCompat.ts(42,13): error TS2322: Type 'IEye' is not assignable to type 'IFrenchEye'. Property 'coleur' is missing in type 'IEye'. @@ -45,10 +44,9 @@ tests/cases/compiler/interfaceAssignmentCompat.ts(44,9): error TS2322: Type 'IEy x=x.sort(CompareYeux); // parameter mismatch ~~~~~~~~~~~ !!! error TS2345: Argument of type '(a: IFrenchEye, b: IFrenchEye) => number' is not assignable to parameter of type '(a: IEye, b: IEye) => number'. -!!! error TS2345: Signature '(a: IEye, b: IEye): number' has no corresponding signature in '(a: IFrenchEye, b: IFrenchEye) => number' -!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. -!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. +!!! error TS2345: Types of parameters 'a' and 'a' are incompatible. +!!! error TS2345: Type 'IFrenchEye' is not assignable to type 'IEye'. +!!! error TS2345: Property 'color' is missing in type 'IFrenchEye'. // type of z inferred from specialized array type var z=x.sort(CompareEyes); // ok diff --git a/tests/baselines/reference/interfaceImplementation7.errors.txt b/tests/baselines/reference/interfaceImplementation7.errors.txt index 531398ba532..b297015dfbe 100644 --- a/tests/baselines/reference/interfaceImplementation7.errors.txt +++ b/tests/baselines/reference/interfaceImplementation7.errors.txt @@ -3,9 +3,8 @@ tests/cases/compiler/interfaceImplementation7.ts(4,11): error TS2320: Interface tests/cases/compiler/interfaceImplementation7.ts(7,7): error TS2420: Class 'C1' incorrectly implements interface 'i4'. Types of property 'name' are incompatible. Type '() => string' is not assignable to type '() => { s: string; n: number; }'. - Signature '(): { s: string; n: number; }' has no corresponding signature in '() => string' - Type 'string' is not assignable to type '{ s: string; n: number; }'. - Property 's' is missing in type 'String'. + Type 'string' is not assignable to type '{ s: string; n: number; }'. + Property 's' is missing in type 'String'. ==== tests/cases/compiler/interfaceImplementation7.ts (2 errors) ==== @@ -23,9 +22,8 @@ tests/cases/compiler/interfaceImplementation7.ts(7,7): error TS2420: Class 'C1' !!! error TS2420: Class 'C1' incorrectly implements interface 'i4'. !!! error TS2420: Types of property 'name' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => { s: string; n: number; }'. -!!! error TS2420: Signature '(): { s: string; n: number; }' has no corresponding signature in '() => string' -!!! error TS2420: Type 'string' is not assignable to type '{ s: string; n: number; }'. -!!! error TS2420: Property 's' is missing in type 'String'. +!!! error TS2420: Type 'string' is not assignable to type '{ s: string; n: number; }'. +!!! error TS2420: Property 's' is missing in type 'String'. public name(): string { return ""; } } \ No newline at end of file diff --git a/tests/baselines/reference/iteratorSpreadInArray9.errors.txt b/tests/baselines/reference/iteratorSpreadInArray9.errors.txt index cc32db8a373..90b8bdbeb46 100644 --- a/tests/baselines/reference/iteratorSpreadInArray9.errors.txt +++ b/tests/baselines/reference/iteratorSpreadInArray9.errors.txt @@ -1,13 +1,11 @@ tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts(1,17): error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterable'. Types of property '[Symbol.iterator]' are incompatible. Type '() => SymbolIterator' is not assignable to type '() => Iterator'. - Signature '(): Iterator' has no corresponding signature in '() => SymbolIterator' - Type 'SymbolIterator' is not assignable to type 'Iterator'. - Types of property 'next' are incompatible. - Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: symbol; }' - Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. - Property 'done' is missing in type '{ value: symbol; }'. + Type 'SymbolIterator' is not assignable to type 'Iterator'. + Types of property 'next' are incompatible. + Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. + Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. + Property 'done' is missing in type '{ value: symbol; }'. ==== tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts (1 errors) ==== @@ -16,13 +14,11 @@ tests/cases/conformance/es6/spread/iteratorSpreadInArray9.ts(1,17): error TS2322 !!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterable'. !!! error TS2322: Types of property '[Symbol.iterator]' are incompatible. !!! error TS2322: Type '() => SymbolIterator' is not assignable to type '() => Iterator'. -!!! error TS2322: Signature '(): Iterator' has no corresponding signature in '() => SymbolIterator' -!!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterator'. -!!! error TS2322: Types of property 'next' are incompatible. -!!! error TS2322: Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in '() => { value: symbol; }' -!!! error TS2322: Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. -!!! error TS2322: Property 'done' is missing in type '{ value: symbol; }'. +!!! error TS2322: Type 'SymbolIterator' is not assignable to type 'Iterator'. +!!! error TS2322: Types of property 'next' are incompatible. +!!! error TS2322: Type '() => { value: symbol; }' is not assignable to type '(value?: any) => IteratorResult'. +!!! error TS2322: Type '{ value: symbol; }' is not assignable to type 'IteratorResult'. +!!! error TS2322: Property 'done' is missing in type '{ value: symbol; }'. class SymbolIterator { next() { diff --git a/tests/baselines/reference/lambdaArgCrash.errors.txt b/tests/baselines/reference/lambdaArgCrash.errors.txt index 658534334f5..bf1c4dd01bd 100644 --- a/tests/baselines/reference/lambdaArgCrash.errors.txt +++ b/tests/baselines/reference/lambdaArgCrash.errors.txt @@ -1,6 +1,5 @@ tests/cases/compiler/lambdaArgCrash.ts(27,25): error TS2304: Cannot find name 'ItemSet'. tests/cases/compiler/lambdaArgCrash.ts(29,14): error TS2345: Argument of type '(items: any) => void' is not assignable to parameter of type '() => any'. - Signature '(): any' has no corresponding signature in '(items: any) => void' ==== tests/cases/compiler/lambdaArgCrash.ts (2 errors) ==== @@ -37,7 +36,6 @@ tests/cases/compiler/lambdaArgCrash.ts(29,14): error TS2345: Argument of type '( super.add(listener); ~~~~~~~~ !!! error TS2345: Argument of type '(items: any) => void' is not assignable to parameter of type '() => any'. -!!! error TS2345: Signature '(): any' has no corresponding signature in '(items: any) => void' } diff --git a/tests/baselines/reference/multipleInheritance.errors.txt b/tests/baselines/reference/multipleInheritance.errors.txt index def2fcbd813..19ef1e755e3 100644 --- a/tests/baselines/reference/multipleInheritance.errors.txt +++ b/tests/baselines/reference/multipleInheritance.errors.txt @@ -3,7 +3,6 @@ tests/cases/compiler/multipleInheritance.ts(18,21): error TS1174: Classes can on tests/cases/compiler/multipleInheritance.ts(34,7): error TS2415: Class 'Baad' incorrectly extends base class 'Good'. Types of property 'g' are incompatible. Type '(n: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(n: number) => number' tests/cases/compiler/multipleInheritance.ts(35,12): error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. @@ -50,7 +49,6 @@ tests/cases/compiler/multipleInheritance.ts(35,12): error TS2425: Class 'Good' d !!! error TS2415: Class 'Baad' incorrectly extends base class 'Good'. !!! error TS2415: Types of property 'g' are incompatible. !!! error TS2415: Type '(n: number) => number' is not assignable to type '() => number'. -!!! error TS2415: Signature '(): number' has no corresponding signature in '(n: number) => number' public f(): number { return 0; } ~ !!! error TS2425: Class 'Good' defines instance member property 'f', but extended class 'Baad' defines it as instance member function. diff --git a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt index 6bc3ec86f72..c4ee3ea17b2 100644 --- a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat.errors.txt @@ -1,18 +1,15 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(7,1): error TS2322: Type 'I' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'string'. + Type 'void' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(14,1): error TS2322: Type 'C' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'string'. + Type 'void' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts(20,1): error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'string'. + Type 'void' is not assignable to type 'string'. ==== tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat.ts (3 errors) ==== @@ -27,8 +24,7 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'I' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Type 'void' is not assignable to type 'string'. i = o; // ok class C { @@ -40,8 +36,7 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'C' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Type 'void' is not assignable to type 'string'. c = o; // ok var a = { @@ -52,6 +47,5 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Type 'void' is not assignable to type 'string'. a = o; // ok \ No newline at end of file diff --git a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt index 174707a8d22..a88796b390e 100644 --- a/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt +++ b/tests/baselines/reference/objectTypeHidingMembersOfObjectAssignmentCompat2.errors.txt @@ -1,28 +1,23 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(7,1): error TS2322: Type 'I' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => number' - Type 'number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. Types of property 'toString' are incompatible. Type '() => string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(14,1): error TS2322: Type 'C' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => number' - Type 'number' is not assignable to type 'string'. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(15,1): error TS2322: Type 'Object' is not assignable to type 'C'. Types of property 'toString' are incompatible. Type '() => string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts(20,1): error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type '() => void' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'string'. + Type 'void' is not assignable to type 'string'. ==== tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentCompat2.ts (5 errors) ==== @@ -37,15 +32,13 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'I' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => number' -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. i = o; // error ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. class C { toString(): number { return 1; } @@ -56,15 +49,13 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type 'C' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => number' -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Type 'number' is not assignable to type 'string'. c = o; // error ~ !!! error TS2322: Type 'Object' is not assignable to type 'C'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => string' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => string' -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var a = { toString: () => { } @@ -74,6 +65,5 @@ tests/cases/conformance/types/members/objectTypeHidingMembersOfObjectAssignmentC !!! error TS2322: Type '{ toString: () => void; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type '() => void' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'string'. +!!! error TS2322: Type 'void' is not assignable to type 'string'. a = o; // ok \ No newline at end of file diff --git a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt index 43d7b633052..52fb45e40d2 100644 --- a/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt +++ b/tests/baselines/reference/optionalFunctionArgAssignability.errors.txt @@ -1,10 +1,8 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. - Signature '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise' has no corresponding signature in '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' - Types of parameters 'onFulFill' and 'onFulfill' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => any'. - Signature '(value: string): any' has no corresponding signature in '(value: number) => any' - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'onFulFill' and 'onFulfill' are incompatible. + Type '(value: number) => any' is not assignable to type '(value: string) => any'. + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/optionalFunctionArgAssignability.ts (1 errors) ==== @@ -17,10 +15,8 @@ tests/cases/compiler/optionalFunctionArgAssignability.ts(7,1): error TS2322: Typ a = b; // error because number is not assignable to string ~ !!! error TS2322: Type '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' is not assignable to type '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U) => Promise'. -!!! error TS2322: Signature '(onFulfill?: (value: string) => U, onReject?: (reason: any) => U): Promise' has no corresponding signature in '(onFulFill?: (value: number) => U, onReject?: (reason: any) => U) => Promise' -!!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. -!!! error TS2322: Type '(value: number) => any' is not assignable to type '(value: string) => any'. -!!! error TS2322: Signature '(value: string): any' has no corresponding signature in '(value: number) => any' -!!! error TS2322: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'string'. +!!! error TS2322: Types of parameters 'onFulFill' and 'onFulfill' are incompatible. +!!! error TS2322: Type '(value: number) => any' is not assignable to type '(value: string) => any'. +!!! error TS2322: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt index 4d8f23385fd..de02509d124 100644 --- a/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt +++ b/tests/baselines/reference/optionalParamAssignmentCompat.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. - Signature '(p1: number, p2: string): void' has no corresponding signature in '(p1?: string) => I1' - Types of parameters 'p1' and 'p1' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'p1' and 'p1' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/compiler/optionalParamAssignmentCompat.ts (1 errors) ==== @@ -17,7 +16,6 @@ tests/cases/compiler/optionalParamAssignmentCompat.ts(10,5): error TS2322: Type var d: I1 = i2.m1; // should error ~ !!! error TS2322: Type '(p1?: string) => I1' is not assignable to type 'I1'. -!!! error TS2322: Signature '(p1: number, p2: string): void' has no corresponding signature in '(p1?: string) => I1' -!!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'p1' and 'p1' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/optionalParamTypeComparison.errors.txt b/tests/baselines/reference/optionalParamTypeComparison.errors.txt index 8e3237a80b1..98a07570c65 100644 --- a/tests/baselines/reference/optionalParamTypeComparison.errors.txt +++ b/tests/baselines/reference/optionalParamTypeComparison.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/optionalParamTypeComparison.ts(4,1): error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. - Signature '(s: string, n?: number): void' has no corresponding signature in '(s: string, b?: boolean) => void' - Types of parameters 'b' and 'n' are incompatible. - Type 'boolean' is not assignable to type 'number'. + Types of parameters 'b' and 'n' are incompatible. + Type 'boolean' is not assignable to type 'number'. tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. - Signature '(s: string, b?: boolean): void' has no corresponding signature in '(s: string, n?: number) => void' - Types of parameters 'n' and 'b' are incompatible. - Type 'number' is not assignable to type 'boolean'. + Types of parameters 'n' and 'b' are incompatible. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/compiler/optionalParamTypeComparison.ts (2 errors) ==== @@ -15,12 +13,10 @@ tests/cases/compiler/optionalParamTypeComparison.ts(5,1): error TS2322: Type '(s f = g; ~ !!! error TS2322: Type '(s: string, b?: boolean) => void' is not assignable to type '(s: string, n?: number) => void'. -!!! error TS2322: Signature '(s: string, n?: number): void' has no corresponding signature in '(s: string, b?: boolean) => void' -!!! error TS2322: Types of parameters 'b' and 'n' are incompatible. -!!! error TS2322: Type 'boolean' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'b' and 'n' are incompatible. +!!! error TS2322: Type 'boolean' is not assignable to type 'number'. g = f; ~ !!! error TS2322: Type '(s: string, n?: number) => void' is not assignable to type '(s: string, b?: boolean) => void'. -!!! error TS2322: Signature '(s: string, b?: boolean): void' has no corresponding signature in '(s: string, n?: number) => void' -!!! error TS2322: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file +!!! error TS2322: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt b/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt index 54e43e0b248..9fc11b681c7 100644 --- a/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt +++ b/tests/baselines/reference/overloadResolutionOverCTLambda.errors.txt @@ -1,6 +1,5 @@ tests/cases/compiler/overloadResolutionOverCTLambda.ts(2,5): error TS2345: Argument of type '(a: number) => number' is not assignable to parameter of type '(item: number) => boolean'. - Signature '(item: number): boolean' has no corresponding signature in '(a: number) => number' - Type 'number' is not assignable to type 'boolean'. + Type 'number' is not assignable to type 'boolean'. ==== tests/cases/compiler/overloadResolutionOverCTLambda.ts (1 errors) ==== @@ -8,5 +7,4 @@ tests/cases/compiler/overloadResolutionOverCTLambda.ts(2,5): error TS2345: Argum foo(a => a); // can not convert (number)=>bool to (number)=>number ~~~~~~ !!! error TS2345: Argument of type '(a: number) => number' is not assignable to parameter of type '(item: number) => boolean'. -!!! error TS2345: Signature '(item: number): boolean' has no corresponding signature in '(a: number) => number' -!!! error TS2345: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file +!!! error TS2345: Type 'number' is not assignable to type 'boolean'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt index 9658555f35b..45c9f99b691 100644 --- a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt +++ b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt @@ -4,10 +4,9 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(14,37): tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,5): error TS2322: Type 'string' is not assignable to type 'number'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(16,38): error TS2344: Type 'D' does not satisfy the constraint 'A'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(18,27): error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. - Signature '(x: B): any' has no corresponding signature in '(x: D) => G' - Types of parameters 'x' and 'x' are incompatible. - Type 'D' is not assignable to type 'B'. - Property 'x' is missing in type 'D'. + Types of parameters 'x' and 'x' are incompatible. + Type 'D' is not assignable to type 'B'. + Property 'x' is missing in type 'D'. tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): error TS2344: Type 'D' does not satisfy the constraint 'A'. @@ -49,8 +48,7 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): }); ~ !!! error TS2345: Argument of type '(x: D) => G' is not assignable to parameter of type '(x: B) => any'. -!!! error TS2345: Signature '(x: B): any' has no corresponding signature in '(x: D) => G' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'D' is not assignable to type 'B'. -!!! error TS2345: Property 'x' is missing in type 'D'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'D' is not assignable to type 'B'. +!!! error TS2345: Property 'x' is missing in type 'D'. \ No newline at end of file diff --git a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt index edc11299c9e..daf057c9ebd 100644 --- a/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt +++ b/tests/baselines/reference/overloadsWithProvisionalErrors.errors.txt @@ -1,12 +1,10 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(6,6): error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. - Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => {}' - Type '{}' is not assignable to type '{ a: number; b: number; }'. - Property 'a' is missing in type '{}'. + Type '{}' is not assignable to type '{ a: number; b: number; }'. + Property 'a' is missing in type '{}'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(7,17): error TS2304: Cannot find name 'blah'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,6): error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. - Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => { a: any; }' - Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. - Property 'b' is missing in type '{ a: any; }'. + Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. + Property 'b' is missing in type '{ a: any; }'. tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cannot find name 'blah'. @@ -19,17 +17,15 @@ tests/cases/compiler/overloadsWithProvisionalErrors.ts(8,17): error TS2304: Cann func(s => ({})); // Error for no applicable overload (object type is missing a and b) ~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => {}' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. -!!! error TS2345: Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => {}' -!!! error TS2345: Type '{}' is not assignable to type '{ a: number; b: number; }'. -!!! error TS2345: Property 'a' is missing in type '{}'. +!!! error TS2345: Type '{}' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'a' is missing in type '{}'. func(s => ({ a: blah, b: 3 })); // Only error inside the function, but not outside (since it would be applicable if not for the provisional error) ~~~~ !!! error TS2304: Cannot find name 'blah'. func(s => ({ a: blah })); // Two errors here, one for blah not being defined, and one for the overload since it would not be applicable anyway ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(s: string) => { a: any; }' is not assignable to parameter of type '(s: string) => { a: number; b: number; }'. -!!! error TS2345: Signature '(s: string): { a: number; b: number; }' has no corresponding signature in '(s: string) => { a: any; }' -!!! error TS2345: Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. -!!! error TS2345: Property 'b' is missing in type '{ a: any; }'. +!!! error TS2345: Type '{ a: any; }' is not assignable to type '{ a: number; b: number; }'. +!!! error TS2345: Property 'b' is missing in type '{ a: any; }'. ~~~~ !!! error TS2304: Cannot find name 'blah'. \ No newline at end of file diff --git a/tests/baselines/reference/parseTypes.errors.txt b/tests/baselines/reference/parseTypes.errors.txt index c141b59e993..bc628ac485b 100644 --- a/tests/baselines/reference/parseTypes.errors.txt +++ b/tests/baselines/reference/parseTypes.errors.txt @@ -1,7 +1,5 @@ tests/cases/compiler/parseTypes.ts(9,1): error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(s: string) => void' tests/cases/compiler/parseTypes.ts(10,1): error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(s: string) => void' tests/cases/compiler/parseTypes.ts(11,1): error TS2322: Type '(s: string) => void' is not assignable to type '{ [x: number]: number; }'. Index signature is missing in type '(s: string) => void'. tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => void' is not assignable to type 'new () => number'. @@ -20,11 +18,9 @@ tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => voi y=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(s: string) => void' x=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '(s: string) => void' w=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type '{ [x: number]: number; }'. diff --git a/tests/baselines/reference/parser536727.errors.txt b/tests/baselines/reference/parser536727.errors.txt index 70841efd89f..4204e62c93b 100644 --- a/tests/baselines/reference/parser536727.errors.txt +++ b/tests/baselines/reference/parser536727.errors.txt @@ -1,9 +1,7 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(7,5): error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' - Type '(x: string) => string' is not assignable to type 'string'. + Type '(x: string) => string' is not assignable to type 'string'. tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(8,5): error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' - Type '(x: string) => string' is not assignable to type 'string'. + Type '(x: string) => string' is not assignable to type 'string'. ==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts (2 errors) ==== @@ -16,11 +14,9 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser536727.ts(8,5): foo(() => g); ~~~~~~~ !!! error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' -!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. +!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. foo(x); ~ !!! error TS2345: Argument of type '() => (x: string) => string' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in '() => (x: string) => string' -!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. +!!! error TS2345: Type '(x: string) => string' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/promiseChaining1.errors.txt b/tests/baselines/reference/promiseChaining1.errors.txt index da593b4086c..bd3e52fcc1c 100644 --- a/tests/baselines/reference/promiseChaining1.errors.txt +++ b/tests/baselines/reference/promiseChaining1.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/promiseChaining1.ts(7,50): error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. - Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' - Type 'string' is not assignable to type 'Function'. - Property 'apply' is missing in type 'String'. + Type 'string' is not assignable to type 'Function'. + Property 'apply' is missing in type 'String'. ==== tests/cases/compiler/promiseChaining1.ts (1 errors) ==== @@ -14,9 +13,8 @@ tests/cases/compiler/promiseChaining1.ts(7,50): error TS2345: Argument of type ' var z = this.then(x => result)/*S*/.then(x => "abc")/*Function*/.then(x => x.length)/*number*/; // Should error on "abc" because it is not a Function ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. -!!! error TS2345: Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Function'. -!!! error TS2345: Property 'apply' is missing in type 'String'. +!!! error TS2345: Type 'string' is not assignable to type 'Function'. +!!! error TS2345: Property 'apply' is missing in type 'String'. return new Chain2(result); } } \ No newline at end of file diff --git a/tests/baselines/reference/promiseChaining2.errors.txt b/tests/baselines/reference/promiseChaining2.errors.txt index acdaad94bef..f12baebd4dc 100644 --- a/tests/baselines/reference/promiseChaining2.errors.txt +++ b/tests/baselines/reference/promiseChaining2.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/promiseChaining2.ts(7,45): error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. - Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' - Type 'string' is not assignable to type 'Function'. - Property 'apply' is missing in type 'String'. + Type 'string' is not assignable to type 'Function'. + Property 'apply' is missing in type 'String'. ==== tests/cases/compiler/promiseChaining2.ts (1 errors) ==== @@ -14,9 +13,8 @@ tests/cases/compiler/promiseChaining2.ts(7,45): error TS2345: Argument of type ' var z = this.then(x => result).then(x => "abc").then(x => x.length); ~~~~~~~~~~ !!! error TS2345: Argument of type '(x: S) => string' is not assignable to parameter of type '(x: S) => Function'. -!!! error TS2345: Signature '(x: S): Function' has no corresponding signature in '(x: S) => string' -!!! error TS2345: Type 'string' is not assignable to type 'Function'. -!!! error TS2345: Property 'apply' is missing in type 'String'. +!!! error TS2345: Type 'string' is not assignable to type 'Function'. +!!! error TS2345: Property 'apply' is missing in type 'String'. return new Chain2(result); } } \ No newline at end of file diff --git a/tests/baselines/reference/promisePermutations.errors.txt b/tests/baselines/reference/promisePermutations.errors.txt index 0787189e2e0..a74938f5dd9 100644 --- a/tests/baselines/reference/promisePermutations.errors.txt +++ b/tests/baselines/reference/promisePermutations.errors.txt @@ -1,75 +1,50 @@ tests/cases/compiler/promisePermutations.ts(74,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations.ts(79,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(84,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(88,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations.ts(93,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations.ts(97,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(102,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(106,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(111,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(117,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(122,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations.ts(126,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations.ts(129,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations.ts(134,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations.ts(137,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -80,35 +55,27 @@ tests/cases/compiler/promisePermutations.ts(152,12): error TS2453: The type argu Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(value: string) => IPromise' - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations.ts(156,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(158,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. - Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => Promise' - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/promisePermutations.ts (33 errors) ==== @@ -188,10 +155,9 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -199,100 +165,84 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -301,28 +251,23 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // ok @@ -335,15 +280,12 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -375,47 +317,39 @@ tests/cases/compiler/promisePermutations.ts(160,21): error TS2345: Argument of t !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2453: Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. -!!! error TS2453: Signature '(value: number): Promise' has no corresponding signature in '(value: string) => IPromise' -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. -!!! error TS2345: Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => Promise' -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok diff --git a/tests/baselines/reference/promisePermutations2.errors.txt b/tests/baselines/reference/promisePermutations2.errors.txt index 054cdec66c9..8afceeae0fd 100644 --- a/tests/baselines/reference/promisePermutations2.errors.txt +++ b/tests/baselines/reference/promisePermutations2.errors.txt @@ -1,75 +1,50 @@ tests/cases/compiler/promisePermutations2.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations2.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations2.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations2.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations2.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations2.ts(96,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(99,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations2.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations2.ts(125,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations2.ts(128,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(131,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations2.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations2.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations2.ts(136,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -80,35 +55,27 @@ tests/cases/compiler/promisePermutations2.ts(151,12): error TS2453: The type arg Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. - Signature '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. - Signature '(value: number): any' has no corresponding signature in '(value: string) => IPromise' - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations2.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(157,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(158,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. - Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => any' - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/promisePermutations2.ts (33 errors) ==== @@ -187,10 +154,9 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); // Should error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -198,100 +164,84 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -300,28 +250,23 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // error @@ -334,15 +279,12 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -374,47 +316,39 @@ tests/cases/compiler/promisePermutations2.ts(159,21): error TS2345: Argument of !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' is not assignable to type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise'. -!!! error TS2453: Signature '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise' has no corresponding signature in '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }' -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. -!!! error TS2453: Signature '(value: number): any' has no corresponding signature in '(value: string) => IPromise' -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => IPromise' is not assignable to type '(value: number) => any'. +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. -!!! error TS2345: Signature '(success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise' has no corresponding signature in '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(value: number) => any' -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '(success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void) => Promise' is not assignable to type '{ (success?: (value: string) => IPromise, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => IPromise, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => IPromise, progress?: (progress: any) => void): IPromise; (success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise; }'. +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => any' is not assignable to type '(value: string) => IPromise'. +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok diff --git a/tests/baselines/reference/promisePermutations3.errors.txt b/tests/baselines/reference/promisePermutations3.errors.txt index 5d414cf4176..b17021a02b9 100644 --- a/tests/baselines/reference/promisePermutations3.errors.txt +++ b/tests/baselines/reference/promisePermutations3.errors.txt @@ -1,79 +1,53 @@ tests/cases/compiler/promisePermutations3.ts(68,69): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. - Property 'then' is missing in type 'Number'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. + Property 'then' is missing in type 'Number'. tests/cases/compiler/promisePermutations3.ts(73,70): error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. - Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'IPromise'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'IPromise'. tests/cases/compiler/promisePermutations3.ts(78,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(81,19): error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(82,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(83,19): error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' - Types of parameters 'x' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'x' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(87,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations3.ts(90,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' tests/cases/compiler/promisePermutations3.ts(91,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations3.ts(92,19): error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' tests/cases/compiler/promisePermutations3.ts(96,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(99,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(100,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(101,19): error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(105,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(108,19): error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(109,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. - Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(110,19): error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. - Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' - Types of parameters 'cb' and 'value' are incompatible. - Type '(a: T) => T' is not assignable to type 'string'. + Types of parameters 'cb' and 'value' are incompatible. + Type '(a: T) => T' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(116,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(119,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' tests/cases/compiler/promisePermutations3.ts(120,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(121,19): error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' tests/cases/compiler/promisePermutations3.ts(125,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations3.ts(128,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(131,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' tests/cases/compiler/promisePermutations3.ts(132,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations3.ts(133,19): error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' tests/cases/compiler/promisePermutations3.ts(136,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'IPromise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Type 'string' is not assignable to type 'number'. @@ -84,42 +58,32 @@ tests/cases/compiler/promisePermutations3.ts(151,12): error TS2453: The type arg Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. Types of property 'then' are incompatible. Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '(value: string) => any' - Types of parameters 'value' and 'value' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. + Types of parameters 'value' and 'value' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/promisePermutations3.ts(155,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(157,21): error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' - Type 'IPromise' is not assignable to type 'IPromise'. - Type 'number' is not assignable to type 'string'. + Type 'IPromise' is not assignable to type 'IPromise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(158,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. - Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'Promise'. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'Promise'. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(159,21): error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. - Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' - Type 'Promise' is not assignable to type 'IPromise'. - Types of property 'then' are incompatible. - Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. - Signature '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' - Types of parameters 'success' and 'success' are incompatible. - Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. - Signature '(value: string): any' has no corresponding signature in '(value: number) => Promise' - Types of parameters 'value' and 'value' are incompatible. - Type 'number' is not assignable to type 'string'. + Type 'Promise' is not assignable to type 'IPromise'. + Types of property 'then' are incompatible. + Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. + Types of parameters 'success' and 'success' are incompatible. + Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. + Types of parameters 'value' and 'value' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of type '{ (x: T): IPromise; (x: T, y: T): Promise; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise'. - Signature '(value: (x: any) => any): Promise' has no corresponding signature in '{ (x: T): IPromise; (x: T, y: T): Promise; }' - Type 'IPromise' is not assignable to type 'Promise'. - Types of property 'then' are incompatible. - Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. - Signature '(success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' - Type 'IPromise' is not assignable to type 'Promise'. + Type 'IPromise' is not assignable to type 'Promise'. + Types of property 'then' are incompatible. + Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. + Type 'IPromise' is not assignable to type 'Promise'. ==== tests/cases/compiler/promisePermutations3.ts (35 errors) ==== @@ -193,10 +157,9 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r3b = r3.then(testFunction3, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. -!!! error TS2345: Property 'then' is missing in type 'Number'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Property 'then' is missing in type 'Number'. var s3: Promise; var s3a = s3.then(testFunction3, testFunction3, testFunction3); var s3b = s3.then(testFunction3P, testFunction3P, testFunction3P); @@ -204,9 +167,8 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s3d = s3.then(testFunction3P, testFunction3, testFunction3).then(testFunction3, testFunction3, testFunction3); ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => IPromise' is not assignable to parameter of type '(value: IPromise) => IPromise'. -!!! error TS2345: Signature '(value: IPromise): IPromise' has no corresponding signature in '(x: number) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'IPromise'. var r4: IPromise; var sIPromise: (x: any) => IPromise; @@ -214,100 +176,84 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r4a = r4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r4b = r4.then(sIPromise, testFunction4, testFunction4).then(sIPromise, testFunction4, testFunction4); // ok var s4: Promise; var s4a = s4.then(testFunction4, testFunction4, testFunction4); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => IPromise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4b = s4.then(testFunction4P, testFunction4P, testFunction4P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4c = s4.then(testFunction4P, testFunction4, testFunction4); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, y?: string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, y?: string) => Promise' -!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'x' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s4d = s4.then(sIPromise, testFunction4P, testFunction4).then(sIPromise, testFunction4P, testFunction4); var r5: IPromise; var r5a = r5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var r5b = r5.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s5: Promise; var s5a = s5.then(testFunction5, testFunction5, testFunction5); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => IPromise' var s5b = s5.then(testFunction5P, testFunction5P, testFunction5P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5c = s5.then(testFunction5P, testFunction5, testFunction5); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: string) => string) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: string) => string) => Promise' var s5d = s5.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r6: IPromise; var r6a = r6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var r6b = r6.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s6: Promise; var s6a = s6.then(testFunction6, testFunction6, testFunction6); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => IPromise' var s6b = s6.then(testFunction6P, testFunction6P, testFunction6P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6c = s6.then(testFunction6P, testFunction6, testFunction6); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(x: number, cb: (a: T) => T) => Promise' var s6d = s6.then(sPromise, sPromise, sPromise).then(sIPromise, sIPromise, sIPromise); // ok var r7: IPromise; var r7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var r7b = r7.then(sIPromise, sIPromise, sIPromise).then(sIPromise, sIPromise, sIPromise); // ok var s7: Promise; var s7a = r7.then(testFunction7, testFunction7, testFunction7); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => IPromise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7b = r7.then(testFunction7P, testFunction7P, testFunction7P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => Promise'. -!!! error TS2345: Signature '(value: string): Promise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7c = r7.then(testFunction7P, testFunction7, testFunction7); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: string) => IPromise'. -!!! error TS2345: Signature '(value: string): IPromise' has no corresponding signature in '(cb: (a: T) => T) => Promise' -!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. -!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. +!!! error TS2345: Types of parameters 'cb' and 'value' are incompatible. +!!! error TS2345: Type '(a: T) => T' is not assignable to type 'string'. var s7d = r7.then(sPromise, sPromise, sPromise).then(sPromise, sPromise, sPromise); // ok? var r8: IPromise; @@ -316,28 +262,23 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var r8a = r8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var r8b = r8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var s8: Promise; var s8a = s8.then(testFunction8, testFunction8, testFunction8); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => IPromise' var s8b = s8.then(testFunction8P, testFunction8P, testFunction8P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8c = s8.then(testFunction8P, testFunction8, testFunction8); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: T) => T) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: T) => T) => Promise' var s8d = s8.then(nIPromise, nIPromise, nIPromise).then(nIPromise, nIPromise, nIPromise); // ok var r9: IPromise; var r9a = r9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var r9b = r9.then(sIPromise, sIPromise, sIPromise); // ok var r9c = r9.then(nIPromise, nIPromise, nIPromise); // ok var r9d = r9.then(testFunction, sIPromise, nIPromise); // error @@ -350,15 +291,12 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s9a = s9.then(testFunction9, testFunction9, testFunction9); // error ~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => IPromise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => IPromise' var s9b = s9.then(testFunction9P, testFunction9P, testFunction9P); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9c = s9.then(testFunction9P, testFunction9, testFunction9); // error ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: T, cb: (a: U) => U) => Promise' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '(x: T, cb: (a: U) => U) => Promise' var s9d = s9.then(sPromise, sPromise, sPromise); // ok var s9e = s9.then(nPromise, nPromise, nPromise); // ok var s9f = s9.then(testFunction, sIPromise, nIPromise); // error @@ -390,47 +328,39 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of !!! error TS2453: Type argument candidate 'Promise' is not a valid type argument because it is not a supertype of candidate 'IPromise'. !!! error TS2453: Types of property 'then' are incompatible. !!! error TS2453: Type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2453: Signature '(success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' -!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2453: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. -!!! error TS2453: Signature '(value: number): Promise' has no corresponding signature in '(value: string) => any' -!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2453: Type 'string' is not assignable to type 'number'. +!!! error TS2453: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2453: Type '(value: string) => any' is not assignable to type '(value: number) => Promise'. +!!! error TS2453: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2453: Type 'string' is not assignable to type 'number'. var s10g = s10.then(testFunctionP, nIPromise, sIPromise).then(sPromise, sIPromise, sIPromise); // ok var r11: IPromise; var r11a = r11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11: Promise; var s11a = s11.then(testFunction11, testFunction11, testFunction11); // ok ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): IPromise; (x: string): IPromise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): IPromise; (x: string): IPromise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'IPromise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11b = s11.then(testFunction11P, testFunction11P, testFunction11P); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => Promise'. -!!! error TS2345: Signature '(value: number): Promise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var s11c = s11.then(testFunction11P, testFunction11, testFunction11); // error ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: number): Promise; (x: string): Promise; }' is not assignable to parameter of type '(value: number) => IPromise'. -!!! error TS2345: Signature '(value: number): IPromise' has no corresponding signature in '{ (x: number): Promise; (x: string): Promise; }' -!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. -!!! error TS2345: Signature '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void): IPromise' has no corresponding signature in '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' -!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. -!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. -!!! error TS2345: Signature '(value: string): any' has no corresponding signature in '(value: number) => Promise' -!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. -!!! error TS2345: Type 'number' is not assignable to type 'string'. +!!! error TS2345: Type 'Promise' is not assignable to type 'IPromise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '{ (success?: (value: number) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: number) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }' is not assignable to type '(success?: (value: string) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise'. +!!! error TS2345: Types of parameters 'success' and 'success' are incompatible. +!!! error TS2345: Type '(value: number) => Promise' is not assignable to type '(value: string) => any'. +!!! error TS2345: Types of parameters 'value' and 'value' are incompatible. +!!! error TS2345: Type 'number' is not assignable to type 'string'. var r12 = testFunction12(x => x); var r12a = r12.then(testFunction12, testFunction12, testFunction12); // ok @@ -439,10 +369,8 @@ tests/cases/compiler/promisePermutations3.ts(165,21): error TS2345: Argument of var s12b = s12.then(testFunction12P, testFunction12P, testFunction12P); // ok ~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '{ (x: T): IPromise; (x: T, y: T): Promise; }' is not assignable to parameter of type '(value: (x: any) => any) => Promise'. -!!! error TS2345: Signature '(value: (x: any) => any): Promise' has no corresponding signature in '{ (x: T): IPromise; (x: T, y: T): Promise; }' -!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. -!!! error TS2345: Types of property 'then' are incompatible. -!!! error TS2345: Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. -!!! error TS2345: Signature '(success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise' has no corresponding signature in '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' -!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. +!!! error TS2345: Types of property 'then' are incompatible. +!!! error TS2345: Type '(success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void) => IPromise' is not assignable to type '{ (success?: (value: any) => Promise, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => Promise, error?: (error: any) => U, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => Promise, progress?: (progress: any) => void): Promise; (success?: (value: any) => U, error?: (error: any) => U, progress?: (progress: any) => void): Promise; }'. +!!! error TS2345: Type 'IPromise' is not assignable to type 'Promise'. var s12c = s12.then(testFunction12P, testFunction12, testFunction12); // ok \ No newline at end of file diff --git a/tests/baselines/reference/recursiveFunctionTypes.errors.txt b/tests/baselines/reference/recursiveFunctionTypes.errors.txt index 9bc82f92ff3..4c1b392245f 100644 --- a/tests/baselines/reference/recursiveFunctionTypes.errors.txt +++ b/tests/baselines/reference/recursiveFunctionTypes.errors.txt @@ -2,8 +2,7 @@ tests/cases/compiler/recursiveFunctionTypes.ts(1,35): error TS2322: Type 'number Signature '(): () => typeof fn' has no corresponding signature in 'Number' tests/cases/compiler/recursiveFunctionTypes.ts(3,5): error TS2322: Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => typeof fn' - Type '() => typeof fn' is not assignable to type 'number'. + Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(11,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. @@ -32,8 +31,7 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of var y: () => number = fn; // ok ~ !!! error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => typeof fn' -!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'. +!!! error TS2322: Type '() => typeof fn' is not assignable to type 'number'. var f: () => typeof g; var g: () => typeof f; diff --git a/tests/baselines/reference/requiredInitializedParameter2.errors.txt b/tests/baselines/reference/requiredInitializedParameter2.errors.txt index 493f9e49f23..5dcec536e1b 100644 --- a/tests/baselines/reference/requiredInitializedParameter2.errors.txt +++ b/tests/baselines/reference/requiredInitializedParameter2.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/requiredInitializedParameter2.ts(5,7): error TS2420: Class 'C1' incorrectly implements interface 'I1'. Types of property 'method' are incompatible. Type '(a: number, b: any) => void' is not assignable to type '() => any'. - Signature '(): any' has no corresponding signature in '(a: number, b: any) => void' ==== tests/cases/compiler/requiredInitializedParameter2.ts (1 errors) ==== @@ -14,6 +13,5 @@ tests/cases/compiler/requiredInitializedParameter2.ts(5,7): error TS2420: Class !!! error TS2420: Class 'C1' incorrectly implements interface 'I1'. !!! error TS2420: Types of property 'method' are incompatible. !!! error TS2420: Type '(a: number, b: any) => void' is not assignable to type '() => any'. -!!! error TS2420: Signature '(): any' has no corresponding signature in '(a: number, b: any) => void' method(a = 0, b) { } } \ No newline at end of file diff --git a/tests/baselines/reference/restArgAssignmentCompat.errors.txt b/tests/baselines/reference/restArgAssignmentCompat.errors.txt index cf6c70b58f3..2ea07395099 100644 --- a/tests/baselines/reference/restArgAssignmentCompat.errors.txt +++ b/tests/baselines/reference/restArgAssignmentCompat.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. - Signature '(x: number[], y: string): void' has no corresponding signature in '(...x: number[]) => void' - Types of parameters 'x' and 'x' are incompatible. - Type 'number' is not assignable to type 'number[]'. - Property 'length' is missing in type 'Number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'number' is not assignable to type 'number[]'. + Property 'length' is missing in type 'Number'. ==== tests/cases/compiler/restArgAssignmentCompat.ts (1 errors) ==== @@ -15,9 +14,8 @@ tests/cases/compiler/restArgAssignmentCompat.ts(7,1): error TS2322: Type '(...x: n = f; ~ !!! error TS2322: Type '(...x: number[]) => void' is not assignable to type '(x: number[], y: string) => void'. -!!! error TS2322: Signature '(x: number[], y: string): void' has no corresponding signature in '(...x: number[]) => void' -!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'number[]'. -!!! error TS2322: Property 'length' is missing in type 'Number'. +!!! error TS2322: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'number[]'. +!!! error TS2322: Property 'length' is missing in type 'Number'. n([4], 'foo'); \ No newline at end of file diff --git a/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt b/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt index f490027f870..db23c2a19f6 100644 --- a/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt +++ b/tests/baselines/reference/staticMemberAssignsToConstructorFunctionMembers.errors.txt @@ -1,6 +1,5 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticMemberAssignsToConstructorFunctionMembers.ts(7,9): error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'number'. + Type 'void' is not assignable to type 'number'. ==== tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/staticMemberAssignsToConstructorFunctionMembers.ts (1 errors) ==== @@ -13,8 +12,7 @@ tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclara C.bar = () => { } // error ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type '(x: number) => number'. -!!! error TS2322: Signature '(x: number): number' has no corresponding signature in '() => void' -!!! error TS2322: Type 'void' is not assignable to type 'number'. +!!! error TS2322: Type 'void' is not assignable to type 'number'. C.bar = (x) => x; // ok C.bar = (x: number) => 1; // ok return 1; diff --git a/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt b/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt index aee87f77764..ed6450ad329 100644 --- a/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt +++ b/tests/baselines/reference/stringLiteralTypesAsTypeParameterConstraint02.errors.txt @@ -1,6 +1,5 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint02.ts(6,13): error TS2345: Argument of type '(y: "foo" | "bar") => string' is not assignable to parameter of type '(x: "foo") => "foo"'. - Signature '(x: "foo"): "foo"' has no corresponding signature in '(y: "foo" | "bar") => string' - Type 'string' is not assignable to type '"foo"'. + Type 'string' is not assignable to type '"foo"'. ==== tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint02.ts (1 errors) ==== @@ -12,6 +11,5 @@ tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterCon let f = foo((y: "foo" | "bar") => y === "foo" ? y : "foo"); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(y: "foo" | "bar") => string' is not assignable to parameter of type '(x: "foo") => "foo"'. -!!! error TS2345: Signature '(x: "foo"): "foo"' has no corresponding signature in '(y: "foo" | "bar") => string' -!!! error TS2345: Type 'string' is not assignable to type '"foo"'. +!!! error TS2345: Type 'string' is not assignable to type '"foo"'. let fResult = f("foo"); \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt index 24caddf4849..3821c707f4b 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesA.errors.txt @@ -1,6 +1,5 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesA.ts(2,15): error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: number) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesA.ts (1 errors) ==== @@ -8,5 +7,4 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW var r5 = foo3((x: number) => ''); // error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: number) => string' is not assignable to parameter of type '(x: number) => number'. -!!! error TS2345: Signature '(x: number): number' has no corresponding signature in '(x: number) => string' -!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt index 1ae866d4722..b5d23da2241 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithOptionalParameters.errors.txt @@ -1,11 +1,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts(19,11): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x: number) => number' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '(x: number) => number' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts(49,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. - Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithOptionalParameters.ts (2 errors) ==== @@ -32,7 +30,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: number) => number' is not assignable to type '() => number'. -!!! error TS2430: Signature '(): number' has no corresponding signature in '(x: number) => number' a: (x: number) => number; // error, too many required params } @@ -67,7 +64,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, y: number) => number' is not assignable to type '(x: number) => number'. -!!! error TS2430: Signature '(x: number): number' has no corresponding signature in '(x: number, y: number) => number' a3: (x: number, y: number) => number; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt index aee119d6f73..f4a141ff390 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithRestParameters.errors.txt @@ -1,69 +1,58 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(18,11): error TS2430: Interface 'I1C' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. - Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' - Types of parameters 'args' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(34,11): error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. - Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' - Types of parameters 'x' and 'args' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'args' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(60,11): error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. Types of property 'a2' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. - Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(90,11): error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(94,11): error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' - Types of parameters 'z' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'z' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(98,11): error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(102,11): error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. - Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: string[]) => number' - Types of parameters 'z' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'z' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(110,11): error TS2430: Interface 'I12' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(118,11): error TS2430: Interface 'I14' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' - Types of parameters 'y' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'y' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(126,11): error TS2430: Interface 'I16' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' - Types of parameters 'args' and 'z' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'args' and 'z' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts(130,11): error TS2430: Interface 'I17' incorrectly extends interface 'Base'. Types of property 'a4' are incompatible. Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. - Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(...args: number[]) => number' - Types of parameters 'args' and 'y' are incompatible. - Type 'number' is not assignable to type 'string'. + Types of parameters 'args' and 'y' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithRestParameters.ts (11 errors) ==== @@ -89,9 +78,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I1C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(...args: string[]) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2430: Signature '(...args: number[]): number' has no corresponding signature in '(...args: string[]) => number' -!!! error TS2430: Types of parameters 'args' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'args' and 'args' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a: (...args: string[]) => number; // error, type mismatch } @@ -112,9 +100,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x?: string) => number' is not assignable to type '(...args: number[]) => number'. -!!! error TS2430: Signature '(...args: number[]): number' has no corresponding signature in '(x?: string) => number' -!!! error TS2430: Types of parameters 'x' and 'args' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'x' and 'args' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a: (x?: string) => number; // error, incompatible type } @@ -145,9 +132,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I6C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a2' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x: number, ...z: number[]) => number'. -!!! error TS2430: Signature '(x: number, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' -!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a2: (x: number, ...args: string[]) => number; // error } @@ -182,9 +168,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10B' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, y?: number, z?: number) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number, z?: number) => number' -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: number, y?: number, z?: number) => number; // error } @@ -193,9 +178,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10C' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: number[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: number[]) => number' -!!! error TS2430: Types of parameters 'z' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'z' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a3: (x: number, ...z: number[]) => number; // error } @@ -204,9 +188,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10D' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: string, y?: string, z?: string) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: string, y?: string, z?: string) => number' -!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: string, y?: string, z?: string) => number; // error, incompatible types } @@ -215,9 +198,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10E' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: number, ...z: string[]) => number' is not assignable to type '(x: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...z: string[]) => number' -!!! error TS2430: Types of parameters 'z' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'z' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a3: (x: number, ...z: string[]) => number; // error } @@ -230,9 +212,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I12' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x?: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x?: number, y?: number) => number' -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (x?: number, y?: number) => number; // error, type mismatch } @@ -245,9 +226,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I14' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, y?: number) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, y?: number) => number' -!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'y' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (x: number, y?: number) => number; // error, second param has type mismatch } @@ -260,9 +240,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I16' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(x: number, ...args: string[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(x: number, ...args: string[]) => number' -!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Types of parameters 'args' and 'z' are incompatible. +!!! error TS2430: Type 'string' is not assignable to type 'number'. a4: (x: number, ...args: string[]) => number; // error, rest param has type mismatch } @@ -271,9 +250,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I17' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a4' are incompatible. !!! error TS2430: Type '(...args: number[]) => number' is not assignable to type '(x?: number, y?: string, ...z: number[]) => number'. -!!! error TS2430: Signature '(x?: number, y?: string, ...z: number[]): number' has no corresponding signature in '(...args: number[]) => number' -!!! error TS2430: Types of parameters 'args' and 'y' are incompatible. -!!! error TS2430: Type 'number' is not assignable to type 'string'. +!!! error TS2430: Types of parameters 'args' and 'y' are incompatible. +!!! error TS2430: Type 'number' is not assignable to type 'string'. a4: (...args: number[]) => number; // error } \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt b/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt index 54eec881c14..da742fcd69c 100644 --- a/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt +++ b/tests/baselines/reference/subtypingWithCallSignaturesWithSpecializedSignatures.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithSpecializedSignatures.ts(70,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: string) => string' is not assignable to type '{ (x: "a"): number; (x: string): number; }'. - Signature '(x: string): number' has no corresponding signature in '(x: string) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithCallSignaturesWithSpecializedSignatures.ts (1 errors) ==== @@ -80,8 +79,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: string) => string' is not assignable to type '{ (x: "a"): number; (x: string): number; }'. -!!! error TS2430: Signature '(x: string): number' has no corresponding signature in '(x: string) => string' -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: (x: string) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt index a30feba51c9..e041b1cdce0 100644 --- a/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithConstructSignaturesWithOptionalParameters.errors.txt @@ -1,11 +1,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts(19,11): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type 'new (x: number) => number' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts(49,11): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. - Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithOptionalParameters.ts (2 errors) ==== @@ -32,7 +30,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: number) => number' is not assignable to type 'new () => number'. -!!! error TS2430: Signature 'new (): number' has no corresponding signature in 'new (x: number) => number' a: new (x: number) => number; // error, too many required params } @@ -67,7 +64,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: number, y: number) => number' is not assignable to type 'new (x: number) => number'. -!!! error TS2430: Signature 'new (x: number): number' has no corresponding signature in 'new (x: number, y: number) => number' a3: new (x: number, y: number) => number; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt b/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt index fd9e6faa9ec..8a885a2455f 100644 --- a/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt +++ b/tests/baselines/reference/subtypingWithConstructSignaturesWithSpecializedSignatures.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithSpecializedSignatures.ts(70,15): error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: string) => string' is not assignable to type '{ new (x: "a"): number; new (x: string): number; }'. - Signature 'new (x: string): number' has no corresponding signature in 'new (x: string) => string' - Type 'string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithConstructSignaturesWithSpecializedSignatures.ts (1 errors) ==== @@ -80,8 +79,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I2' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: string) => string' is not assignable to type '{ new (x: "a"): number; new (x: string): number; }'. -!!! error TS2430: Signature 'new (x: string): number' has no corresponding signature in 'new (x: string) => string' -!!! error TS2430: Type 'string' is not assignable to type 'number'. +!!! error TS2430: Type 'string' is not assignable to type 'number'. // N's a: new (x: string) => string; // error because base returns non-void; } diff --git a/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt index 316b5713835..e8f50236cba 100644 --- a/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithGenericCallSignaturesWithOptionalParameters.errors.txt @@ -1,27 +1,21 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(20,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(50,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(108,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(138,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(196,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type '(x: T) => T' is not assignable to type '() => T'. - Signature '(): T' has no corresponding signature in '(x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts(226,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericCallSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -49,7 +43,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. -!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; // error, too many required params } @@ -84,7 +77,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. -!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; // error, too many required params } @@ -147,7 +139,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. -!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; } @@ -182,7 +173,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. -!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; } @@ -245,7 +235,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type '(x: T) => T' is not assignable to type '() => T'. -!!! error TS2430: Signature '(): T' has no corresponding signature in '(x: T) => T' a: (x: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T } @@ -280,7 +269,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type '(x: T, y: T) => T' is not assignable to type '(x: T) => T'. -!!! error TS2430: Signature '(x: T): T' has no corresponding signature in '(x: T, y: T) => T' a3: (x: T, y: T) => T; // error, too many required params } diff --git a/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt b/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt index 66dd34f9cb6..27066058238 100644 --- a/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt +++ b/tests/baselines/reference/subtypingWithGenericConstructSignaturesWithOptionalParameters.errors.txt @@ -1,27 +1,21 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(20,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. - Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(50,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. - Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(108,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. - Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(138,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. - Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(196,15): error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. Types of property 'a' are incompatible. Type 'new (x: T) => T' is not assignable to type 'new () => T'. - Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts(226,15): error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. Types of property 'a3' are incompatible. Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. - Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' ==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithGenericConstructSignaturesWithOptionalParameters.ts (6 errors) ==== @@ -49,7 +43,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. -!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; // error, too many required params } @@ -84,7 +77,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. -!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; // error, too many required params } @@ -147,7 +139,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. -!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; } @@ -182,7 +173,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. -!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; } @@ -245,7 +235,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I3' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a' are incompatible. !!! error TS2430: Type 'new (x: T) => T' is not assignable to type 'new () => T'. -!!! error TS2430: Signature 'new (): T' has no corresponding signature in 'new (x: T) => T' a: new (x: T) => T; // error, not identical and contextual signature instatiation can't make inference from T to T } @@ -280,7 +269,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2430: Interface 'I10' incorrectly extends interface 'Base2'. !!! error TS2430: Types of property 'a3' are incompatible. !!! error TS2430: Type 'new (x: T, y: T) => T' is not assignable to type 'new (x: T) => T'. -!!! error TS2430: Signature 'new (x: T): T' has no corresponding signature in 'new (x: T, y: T) => T' a3: new (x: T, y: T) => T; // error, too many required params } diff --git a/tests/baselines/reference/symbolProperty24.errors.txt b/tests/baselines/reference/symbolProperty24.errors.txt index 58ff17544f9..25cba184e25 100644 --- a/tests/baselines/reference/symbolProperty24.errors.txt +++ b/tests/baselines/reference/symbolProperty24.errors.txt @@ -1,8 +1,7 @@ tests/cases/conformance/es6/Symbols/symbolProperty24.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'I'. Types of property '[Symbol.toPrimitive]' are incompatible. Type '() => string' is not assignable to type '() => boolean'. - Signature '(): boolean' has no corresponding signature in '() => string' - Type 'string' is not assignable to type 'boolean'. + Type 'string' is not assignable to type 'boolean'. ==== tests/cases/conformance/es6/Symbols/symbolProperty24.ts (1 errors) ==== @@ -15,8 +14,7 @@ tests/cases/conformance/es6/Symbols/symbolProperty24.ts(5,7): error TS2420: Clas !!! error TS2420: Class 'C' incorrectly implements interface 'I'. !!! error TS2420: Types of property '[Symbol.toPrimitive]' are incompatible. !!! error TS2420: Type '() => string' is not assignable to type '() => boolean'. -!!! error TS2420: Signature '(): boolean' has no corresponding signature in '() => string' -!!! error TS2420: Type 'string' is not assignable to type 'boolean'. +!!! error TS2420: Type 'string' is not assignable to type 'boolean'. [Symbol.toPrimitive]() { return ""; } diff --git a/tests/baselines/reference/tupleTypes.errors.txt b/tests/baselines/reference/tupleTypes.errors.txt index c1ef7f59454..8f418f98157 100644 --- a/tests/baselines/reference/tupleTypes.errors.txt +++ b/tests/baselines/reference/tupleTypes.errors.txt @@ -10,15 +10,13 @@ tests/cases/compiler/tupleTypes.ts(41,1): error TS2322: Type 'undefined[]' is no tests/cases/compiler/tupleTypes.ts(47,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | string' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | string' - Type 'number | string' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Type 'number | string' is not assignable to type 'number'. + Type 'string' is not assignable to type 'number'. tests/cases/compiler/tupleTypes.ts(49,1): error TS2322: Type '[number, {}]' is not assignable to type 'number[]'. Types of property 'pop' are incompatible. Type '() => number | {}' is not assignable to type '() => number'. - Signature '(): number' has no corresponding signature in '() => number | {}' - Type 'number | {}' is not assignable to type 'number'. - Type '{}' is not assignable to type 'number'. + Type 'number | {}' is not assignable to type 'number'. + Type '{}' is not assignable to type 'number'. tests/cases/compiler/tupleTypes.ts(50,1): error TS2322: Type '[number, number]' is not assignable to type '[number, string]'. Types of property '1' are incompatible. Type 'number' is not assignable to type 'string'. @@ -93,18 +91,16 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n !!! error TS2322: Type '[number, string]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | string' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | string' -!!! error TS2322: Type 'number | string' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Type 'number | string' is not assignable to type 'number'. +!!! error TS2322: Type 'string' is not assignable to type 'number'. a = a2; a = a3; // Error ~ !!! error TS2322: Type '[number, {}]' is not assignable to type 'number[]'. !!! error TS2322: Types of property 'pop' are incompatible. !!! error TS2322: Type '() => number | {}' is not assignable to type '() => number'. -!!! error TS2322: Signature '(): number' has no corresponding signature in '() => number | {}' -!!! error TS2322: Type 'number | {}' is not assignable to type 'number'. -!!! error TS2322: Type '{}' is not assignable to type 'number'. +!!! error TS2322: Type 'number | {}' is not assignable to type 'number'. +!!! error TS2322: Type '{}' is not assignable to type 'number'. a1 = a2; // Error ~~ !!! error TS2322: Type '[number, number]' is not assignable to type '[number, string]'. diff --git a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt index ecfb70a7776..d058426b9c9 100644 --- a/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceConstructSignatures.errors.txt @@ -1,17 +1,14 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(25,35): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(51,19): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(61,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(71,39): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(81,45): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Signature '(b: number): number' has no corresponding signature in '(n: string) => string' - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(106,15): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstructSignatures.ts(118,9): error TS2304: Cannot find name 'Window'. @@ -92,9 +89,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -107,9 +103,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics5(null, null); // Generic call with multiple arguments of function types that each have parameters of the same generic type @@ -122,9 +117,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceConstruct new someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. new someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt index dd9e29b7c31..9bd25dda4e6 100644 --- a/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceErrors.errors.txt @@ -1,16 +1,13 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(3,31): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(7,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(11,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts(15,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Signature '(b: number): number' has no corresponding signature in '(n: string) => string' - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. ==== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts (4 errors) ==== @@ -25,25 +22,22 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceErrors.ts someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type function someGenerics5(n: T, f: (x: U) => void) { } someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. // Generic call with multiple arguments of function types that each have parameters of the same generic type function someGenerics6(a: (a: A) => A, b: (b: A) => A, c: (c: A) => A) { } someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt index e949a0a2fd8..eb74ff0ade0 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithClassExpression2.errors.txt @@ -1,7 +1,6 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpression2.ts(6,5): error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. - Signature 'new (): foo<{}>.(Anonymous class)' has no corresponding signature in 'typeof (Anonymous class)' - Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. - Property 'prop' is missing in type '(Anonymous class)'. + Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. + Property 'prop' is missing in type '(Anonymous class)'. ==== tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpression2.ts (1 errors) ==== @@ -13,6 +12,5 @@ tests/cases/conformance/es6/classExpressions/typeArgumentInferenceWithClassExpre foo(class { static prop = "hello" }).length; ~~~~~ !!! error TS2345: Argument of type 'typeof (Anonymous class)' is not assignable to parameter of type 'typeof (Anonymous class)'. -!!! error TS2345: Signature 'new (): foo<{}>.(Anonymous class)' has no corresponding signature in 'typeof (Anonymous class)' -!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. -!!! error TS2345: Property 'prop' is missing in type '(Anonymous class)'. \ No newline at end of file +!!! error TS2345: Type '(Anonymous class)' is not assignable to type 'foo<{}>.(Anonymous class)'. +!!! error TS2345: Property 'prop' is missing in type '(Anonymous class)'. \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt index 3f0390ec46a..0c1e8cc4e97 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt @@ -4,18 +4,15 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(32,34): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(34,15): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(41,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(48,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. - Signature '(x: number): void' has no corresponding signature in '(x: string) => string' - Types of parameters 'x' and 'x' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'x' and 'x' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(49,15): error TS2344: Type 'string' does not satisfy the constraint 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(55,41): error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. - Signature '(b: number): number' has no corresponding signature in '(n: string) => string' - Types of parameters 'n' and 'b' are incompatible. - Type 'string' is not assignable to type 'number'. + Types of parameters 'n' and 'b' are incompatible. + Type 'string' is not assignable to type 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(66,31): error TS2345: Argument of type '(a: (a: A) => A, b: (b: B) => B, c: (c: C) => C) => void' is not assignable to parameter of type 'string'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(73,11): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string' is not a valid type argument because it is not a supertype of candidate 'number'. @@ -83,9 +80,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics4('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics4(null, null); // 2 parameter generic call with argument 2 of type parameter type and argument 1 of function type whose parameter is of type parameter type @@ -95,9 +91,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics5('', (x: string) => ''); // Error ~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. -!!! error TS2345: Signature '(x: number): void' has no corresponding signature in '(x: string) => string' -!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'x' and 'x' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics5(null, null); // Error ~~~~~~ !!! error TS2344: Type 'string' does not satisfy the constraint 'number'. @@ -109,9 +104,8 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst someGenerics6((n: number) => n, (n: string) => n, (n: number) => n); // Error ~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(n: string) => string' is not assignable to parameter of type '(b: number) => number'. -!!! error TS2345: Signature '(b: number): number' has no corresponding signature in '(n: string) => string' -!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. -!!! error TS2345: Type 'string' is not assignable to type 'number'. +!!! error TS2345: Types of parameters 'n' and 'b' are incompatible. +!!! error TS2345: Type 'string' is not assignable to type 'number'. someGenerics6((n: number) => n, (n: number) => n, (n: number) => n); // Generic call with multiple arguments of function types that each have parameters of different generic type diff --git a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt index fb17775bc31..92d9d21f0cc 100644 --- a/tests/baselines/reference/typeGuardFunctionErrors.errors.txt +++ b/tests/baselines/reference/typeGuardFunctionErrors.errors.txt @@ -14,18 +14,14 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(60,7): tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(65,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(70,7): error TS2339: Property 'propB' does not exist on type 'A'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(75,46): error TS2345: Argument of type '(p1: any) => p1 is C' is not assignable to parameter of type '(p1: any) => p1 is B'. - Signature '(p1: any): p1 is B' has no corresponding signature in '(p1: any) => p1 is C' - Type predicate 'p1 is C' is not assignable to 'p1 is B'. - Type 'C' is not assignable to type 'B'. + Type predicate 'p1 is C' is not assignable to 'p1 is B'. + Type 'C' is not assignable to type 'B'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(79,1): error TS2322: Type '(p1: any, p2: any) => boolean' is not assignable to type '(p1: any, p2: any) => p1 is A'. - Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => boolean' - Signature '(p1: any, p2: any): boolean' must have a type predicate. + Signature '(p1: any, p2: any): boolean' must have a type predicate. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(85,1): error TS2322: Type '(p1: any, p2: any) => p2 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. - Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => p2 is A' - Type predicate 'p2 is A' is not assignable to 'p1 is A'. - Parameter 'p2' is not in the same position as parameter 'p1'. + Type predicate 'p2 is A' is not assignable to 'p1 is A'. + Parameter 'p2' is not in the same position as parameter 'p1'. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(91,1): error TS2322: Type '(p1: any, p2: any, p3: any) => p1 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. - Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any, p3: any) => p1 is A' tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(96,9): error TS1228: A type predicate is only allowed in return type position for functions and methods. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(97,16): error TS1228: A type predicate is only allowed in return type position for functions and methods. tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(98,20): error TS1228: A type predicate is only allowed in return type position for functions and methods. @@ -151,17 +147,15 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 acceptingDifferentSignatureTypeGuardFunction(isC); ~~~ !!! error TS2345: Argument of type '(p1: any) => p1 is C' is not assignable to parameter of type '(p1: any) => p1 is B'. -!!! error TS2345: Signature '(p1: any): p1 is B' has no corresponding signature in '(p1: any) => p1 is C' -!!! error TS2345: Type predicate 'p1 is C' is not assignable to 'p1 is B'. -!!! error TS2345: Type 'C' is not assignable to type 'B'. +!!! error TS2345: Type predicate 'p1 is C' is not assignable to 'p1 is B'. +!!! error TS2345: Type 'C' is not assignable to type 'B'. // Boolean not assignable to type guard var assign1: (p1, p2) => p1 is A; assign1 = function(p1, p2): boolean { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any) => boolean' is not assignable to type '(p1: any, p2: any) => p1 is A'. -!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => boolean' -!!! error TS2322: Signature '(p1: any, p2: any): boolean' must have a type predicate. +!!! error TS2322: Signature '(p1: any, p2: any): boolean' must have a type predicate. return true; }; @@ -170,9 +164,8 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 assign2 = function(p1, p2): p2 is A { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any) => p2 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. -!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any) => p2 is A' -!!! error TS2322: Type predicate 'p2 is A' is not assignable to 'p1 is A'. -!!! error TS2322: Parameter 'p2' is not in the same position as parameter 'p1'. +!!! error TS2322: Type predicate 'p2 is A' is not assignable to 'p1 is A'. +!!! error TS2322: Parameter 'p2' is not in the same position as parameter 'p1'. return true; }; @@ -181,7 +174,6 @@ tests/cases/conformance/expressions/typeGuards/typeGuardFunctionErrors.ts(137,39 assign3 = function(p1, p2, p3): p1 is A { ~~~~~~~ !!! error TS2322: Type '(p1: any, p2: any, p3: any) => p1 is A' is not assignable to type '(p1: any, p2: any) => p1 is A'. -!!! error TS2322: Signature '(p1: any, p2: any): p1 is A' has no corresponding signature in '(p1: any, p2: any, p3: any) => p1 is A' return true; }; diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt index 789820116ba..f47266f2850 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. - Signature '(item: number): boolean' has no corresponding signature in '(item: T) => boolean' - Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'number'. + Types of parameters 'item' and 'item' are incompatible. + Type 'T' is not assignable to type 'number'. tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. - Signature '(item: T): boolean' has no corresponding signature in '(item: number) => boolean' - Types of parameters 'item' and 'item' are incompatible. - Type 'number' is not assignable to type 'T'. + Types of parameters 'item' and 'item' are incompatible. + Type 'number' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence.ts (2 errors) ==== @@ -15,14 +13,12 @@ tests/cases/compiler/typeParameterArgumentEquivalence.ts(5,5): error TS2322: Typ x = y; // Should be an error ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: number) => boolean'. -!!! error TS2322: Signature '(item: number): boolean' has no corresponding signature in '(item: T) => boolean' -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'number'. +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'T' is not assignable to type 'number'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: number) => boolean' is not assignable to type '(item: T) => boolean'. -!!! error TS2322: Signature '(item: T): boolean' has no corresponding signature in '(item: number) => boolean' -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type 'T'. +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'number' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt index a50fd533ae6..2aa8d77ba6d 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence2.errors.txt @@ -1,11 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(4,5): error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. - Signature '(item: U): boolean' has no corresponding signature in '(item: T) => boolean' - Types of parameters 'item' and 'item' are incompatible. - Type 'T' is not assignable to type 'U'. + Types of parameters 'item' and 'item' are incompatible. + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. - Signature '(item: T): boolean' has no corresponding signature in '(item: U) => boolean' - Types of parameters 'item' and 'item' are incompatible. - Type 'U' is not assignable to type 'T'. + Types of parameters 'item' and 'item' are incompatible. + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence2.ts (2 errors) ==== @@ -15,14 +13,12 @@ tests/cases/compiler/typeParameterArgumentEquivalence2.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: T) => boolean' is not assignable to type '(item: U) => boolean'. -!!! error TS2322: Signature '(item: U): boolean' has no corresponding signature in '(item: T) => boolean' -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: U) => boolean' is not assignable to type '(item: T) => boolean'. -!!! error TS2322: Signature '(item: T): boolean' has no corresponding signature in '(item: U) => boolean' -!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Types of parameters 'item' and 'item' are incompatible. +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt index 50e33c7afa4..1f126d7c00d 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence3.errors.txt @@ -1,9 +1,7 @@ tests/cases/compiler/typeParameterArgumentEquivalence3.ts(4,5): error TS2322: Type '(item: any) => boolean' is not assignable to type '(item: any) => T'. - Signature '(item: any): T' has no corresponding signature in '(item: any) => boolean' - Type 'boolean' is not assignable to type 'T'. + Type 'boolean' is not assignable to type 'T'. tests/cases/compiler/typeParameterArgumentEquivalence3.ts(5,5): error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => boolean'. - Signature '(item: any): boolean' has no corresponding signature in '(item: any) => T' - Type 'T' is not assignable to type 'boolean'. + Type 'T' is not assignable to type 'boolean'. ==== tests/cases/compiler/typeParameterArgumentEquivalence3.ts (2 errors) ==== @@ -13,12 +11,10 @@ tests/cases/compiler/typeParameterArgumentEquivalence3.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: any) => boolean' is not assignable to type '(item: any) => T'. -!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => boolean' -!!! error TS2322: Type 'boolean' is not assignable to type 'T'. +!!! error TS2322: Type 'boolean' is not assignable to type 'T'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => boolean'. -!!! error TS2322: Signature '(item: any): boolean' has no corresponding signature in '(item: any) => T' -!!! error TS2322: Type 'T' is not assignable to type 'boolean'. +!!! error TS2322: Type 'T' is not assignable to type 'boolean'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt index 68ab8dc28df..c7b19e8725c 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence4.errors.txt @@ -1,9 +1,7 @@ tests/cases/compiler/typeParameterArgumentEquivalence4.ts(4,5): error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. - Signature '(item: any): U' has no corresponding signature in '(item: any) => T' - Type 'T' is not assignable to type 'U'. + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence4.ts(5,5): error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. - Signature '(item: any): T' has no corresponding signature in '(item: any) => U' - Type 'U' is not assignable to type 'T'. + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence4.ts (2 errors) ==== @@ -13,12 +11,10 @@ tests/cases/compiler/typeParameterArgumentEquivalence4.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. -!!! error TS2322: Signature '(item: any): U' has no corresponding signature in '(item: any) => T' -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. -!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => U' -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt b/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt index 8e1ac388a82..82290733a9e 100644 --- a/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt +++ b/tests/baselines/reference/typeParameterArgumentEquivalence5.errors.txt @@ -1,13 +1,9 @@ tests/cases/compiler/typeParameterArgumentEquivalence5.ts(4,5): error TS2322: Type '() => (item: any) => T' is not assignable to type '() => (item: any) => U'. - Signature '(): (item: any) => U' has no corresponding signature in '() => (item: any) => T' - Type '(item: any) => T' is not assignable to type '(item: any) => U'. - Signature '(item: any): U' has no corresponding signature in '(item: any) => T' - Type 'T' is not assignable to type 'U'. + Type '(item: any) => T' is not assignable to type '(item: any) => U'. + Type 'T' is not assignable to type 'U'. tests/cases/compiler/typeParameterArgumentEquivalence5.ts(5,5): error TS2322: Type '() => (item: any) => U' is not assignable to type '() => (item: any) => T'. - Signature '(): (item: any) => T' has no corresponding signature in '() => (item: any) => U' - Type '(item: any) => U' is not assignable to type '(item: any) => T'. - Signature '(item: any): T' has no corresponding signature in '(item: any) => U' - Type 'U' is not assignable to type 'T'. + Type '(item: any) => U' is not assignable to type '(item: any) => T'. + Type 'U' is not assignable to type 'T'. ==== tests/cases/compiler/typeParameterArgumentEquivalence5.ts (2 errors) ==== @@ -17,16 +13,12 @@ tests/cases/compiler/typeParameterArgumentEquivalence5.ts(5,5): error TS2322: Ty x = y; // Should be an error ~ !!! error TS2322: Type '() => (item: any) => T' is not assignable to type '() => (item: any) => U'. -!!! error TS2322: Signature '(): (item: any) => U' has no corresponding signature in '() => (item: any) => T' -!!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. -!!! error TS2322: Signature '(item: any): U' has no corresponding signature in '(item: any) => T' -!!! error TS2322: Type 'T' is not assignable to type 'U'. +!!! error TS2322: Type '(item: any) => T' is not assignable to type '(item: any) => U'. +!!! error TS2322: Type 'T' is not assignable to type 'U'. y = x; // Shound be an error ~ !!! error TS2322: Type '() => (item: any) => U' is not assignable to type '() => (item: any) => T'. -!!! error TS2322: Signature '(): (item: any) => T' has no corresponding signature in '() => (item: any) => U' -!!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. -!!! error TS2322: Signature '(item: any): T' has no corresponding signature in '(item: any) => U' -!!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type '(item: any) => U' is not assignable to type '(item: any) => T'. +!!! error TS2322: Type 'U' is not assignable to type 'T'. } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt index 8d926a14378..5a6047222ee 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments2.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts(7,25): error TS2345: Argument of type '(x: A) => A' is not assignable to parameter of type '(x: A) => B'. - Signature '(x: A): B' has no corresponding signature in '(x: A) => A' - Type 'A' is not assignable to type 'B'. - Property 'b' is missing in type 'A'. + Type 'A' is not assignable to type 'B'. + Property 'b' is missing in type 'A'. ==== tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts (1 errors) ==== @@ -14,6 +13,5 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments2.ts(7,25): var d = f(a, b, x => x, x => x); // A => A not assignable to A => B ~~~~~~ !!! error TS2345: Argument of type '(x: A) => A' is not assignable to parameter of type '(x: A) => B'. -!!! error TS2345: Signature '(x: A): B' has no corresponding signature in '(x: A) => A' -!!! error TS2345: Type 'A' is not assignable to type 'B'. -!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file +!!! error TS2345: Type 'A' is not assignable to type 'B'. +!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt index c93aa87f44b..cd0801f7ba9 100644 --- a/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt +++ b/tests/baselines/reference/typeParameterFixingWithContextSensitiveArguments3.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts(7,29): error TS2345: Argument of type '(t2: A) => A' is not assignable to parameter of type '(t2: A) => B'. - Signature '(t2: A): B' has no corresponding signature in '(t2: A) => A' - Type 'A' is not assignable to type 'B'. - Property 'b' is missing in type 'A'. + Type 'A' is not assignable to type 'B'. + Property 'b' is missing in type 'A'. ==== tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts (1 errors) ==== @@ -14,6 +13,5 @@ tests/cases/compiler/typeParameterFixingWithContextSensitiveArguments3.ts(7,29): var d = f(a, b, u2 => u2.b, t2 => t2); ~~~~~~~~ !!! error TS2345: Argument of type '(t2: A) => A' is not assignable to parameter of type '(t2: A) => B'. -!!! error TS2345: Signature '(t2: A): B' has no corresponding signature in '(t2: A) => A' -!!! error TS2345: Type 'A' is not assignable to type 'B'. -!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file +!!! error TS2345: Type 'A' is not assignable to type 'B'. +!!! error TS2345: Property 'b' is missing in type 'A'. \ No newline at end of file diff --git a/tests/baselines/reference/undeclaredModuleError.errors.txt b/tests/baselines/reference/undeclaredModuleError.errors.txt index 3c1f930856c..74e36318595 100644 --- a/tests/baselines/reference/undeclaredModuleError.errors.txt +++ b/tests/baselines/reference/undeclaredModuleError.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/undeclaredModuleError.ts(1,21): error TS2307: Cannot find module 'fs'. tests/cases/compiler/undeclaredModuleError.ts(8,29): error TS2345: Argument of type '() => void' is not assignable to parameter of type '(stat: any, name: string) => boolean'. - Signature '(stat: any, name: string): boolean' has no corresponding signature in '() => void' - Type 'void' is not assignable to type 'boolean'. + Type 'void' is not assignable to type 'boolean'. tests/cases/compiler/undeclaredModuleError.ts(11,41): error TS2304: Cannot find name 'IDoNotExist'. @@ -20,8 +19,7 @@ tests/cases/compiler/undeclaredModuleError.ts(11,41): error TS2304: Cannot find } , (error: Error, files: {}[]) => { ~~~~~~~~~ !!! error TS2345: Argument of type '() => void' is not assignable to parameter of type '(stat: any, name: string) => boolean'. -!!! error TS2345: Signature '(stat: any, name: string): boolean' has no corresponding signature in '() => void' -!!! error TS2345: Type 'void' is not assignable to type 'boolean'. +!!! error TS2345: Type 'void' is not assignable to type 'boolean'. files.forEach((file) => { var fullPath = join(IDoNotExist); ~~~~~~~~~~~ From c87c1e9b3fd461ca02c94efc3f69ba3e73ba7d01 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 25 Nov 2015 10:51:31 -0800 Subject: [PATCH 040/265] Improve error message And accept baselines --- src/compiler/checker.ts | 6 +- src/compiler/diagnosticMessages.json | 2 +- .../baselines/reference/assignToFn.errors.txt | 4 +- ...ntCompatWithConstructSignatures.errors.txt | 32 ++++----- ...tCompatWithConstructSignatures2.errors.txt | 16 ++--- ...tCompatWithConstructSignatures4.errors.txt | 8 +-- .../assignmentCompatability24.errors.txt | 4 +- .../assignmentCompatability33.errors.txt | 4 +- .../assignmentCompatability34.errors.txt | 4 +- .../assignmentCompatability37.errors.txt | 4 +- .../assignmentCompatability38.errors.txt | 4 +- .../reference/assignmentToObject.errors.txt | 4 +- .../assignmentToObjectAndFunction.errors.txt | 8 +-- .../callConstructAssignment.errors.txt | 8 +-- ...ssignabilityConstructorFunction.errors.txt | 4 +- .../reference/constructorAsType.errors.txt | 4 +- .../reference/contextualTyping24.errors.txt | 4 +- .../reference/enumAssignability.errors.txt | 12 ++-- tests/baselines/reference/for-of30.errors.txt | 4 +- ...functionConstraintSatisfaction2.errors.txt | 24 +++---- .../reference/generatorTypeCheck31.errors.txt | 4 +- ...lWithGenericSignatureArguments3.errors.txt | 4 +- .../reference/incompatibleTypes.errors.txt | 4 +- ...eMemberAccessorOverridingMethod.errors.txt | 4 +- ...eStaticAccessorOverridingMethod.errors.txt | 4 +- ...eStaticPropertyOverridingMethod.errors.txt | 4 +- .../reference/intTypeCheck.errors.txt | 72 +++++++++---------- .../interfaceImplementation1.errors.txt | 4 +- .../invalidBooleanAssignments.errors.txt | 4 +- ...mbersOfFunctionAssignmentCompat.errors.txt | 8 +-- ...mbersOfFunctionAssignmentCompat.errors.txt | 8 +-- .../overloadOnConstInheritance2.errors.txt | 4 +- .../overloadOnConstInheritance3.errors.txt | 4 +- .../baselines/reference/parseTypes.errors.txt | 4 +- ...serAutomaticSemicolonInsertion1.errors.txt | 8 +-- .../reference/propertyAssignment.errors.txt | 8 +-- tests/baselines/reference/qualify.errors.txt | 8 +-- .../recursiveFunctionTypes.errors.txt | 20 +++--- .../reference/targetTypeVoidFunc.errors.txt | 4 +- .../baselines/reference/typeName1.errors.txt | 8 +-- .../typesWithPrivateConstructor.errors.txt | 4 +- .../typesWithPublicConstructor.errors.txt | 4 +- 42 files changed, 178 insertions(+), 178 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d490004ae76..4be22e4499e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5454,9 +5454,9 @@ namespace ts { } } if (localErrors) { - reportError(Diagnostics.Signature_0_has_no_corresponding_signature_in_1, - signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind), - typeToString(source)); + reportError(Diagnostics.Type_0_provides_no_match_for_the_signature_1, + typeToString(source), + signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); } return Ternary.False; } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index d0e62b353c6..6ee25911d68 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1724,7 +1724,7 @@ "category": "Error", "code": 2657 }, - "Signature '{0}' has no corresponding signature in '{1}'": { + "Type '{0}' provides no match for the signature '{1}'": { "category": "Error", "code": 2658 }, diff --git a/tests/baselines/reference/assignToFn.errors.txt b/tests/baselines/reference/assignToFn.errors.txt index 2b2b2a5366f..0456a6faa5e 100644 --- a/tests/baselines/reference/assignToFn.errors.txt +++ b/tests/baselines/reference/assignToFn.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. - Signature '(n: number): boolean' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(n: number): boolean' ==== tests/cases/compiler/assignToFn.ts (1 errors) ==== @@ -13,6 +13,6 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assi x.f="hello"; ~~~ !!! error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. -!!! error TS2322: Signature '(n: number): boolean' has no corresponding signature in 'String' +!!! error TS2322: Type 'String' provides no match for the signature '(n: number): boolean' } \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt index dfefb83af2f..8e285d414e5 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures.errors.txt @@ -1,19 +1,19 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(28,1): error TS2322: Type 'S2' is not assignable to type 'T'. - Signature 'new (x: number): void' has no corresponding signature in 'S2' + Type 'S2' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(29,1): error TS2322: Type '(x: string) => void' is not assignable to type 'T'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(30,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' + Type '(x: string) => number' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(31,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' + Type '(x: string) => string' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(32,1): error TS2322: Type 'S2' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in 'S2' + Type 'S2' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(33,1): error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(34,1): error TS2322: Type '(x: string) => number' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' + Type '(x: string) => number' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts(35,1): error TS2322: Type '(x: string) => string' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' + Type '(x: string) => string' provides no match for the signature 'new (x: number): void' ==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures.ts (8 errors) ==== @@ -47,33 +47,33 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme t = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'T'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'S2' +!!! error TS2322: Type 'S2' provides no match for the signature 'new (x: number): void' t = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'T'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' +!!! error TS2322: Type '(x: string) => number' provides no match for the signature 'new (x: number): void' t = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'T'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Type '(x: string) => string' provides no match for the signature 'new (x: number): void' a = s2; ~ !!! error TS2322: Type 'S2' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in 'S2' +!!! error TS2322: Type 'S2' provides no match for the signature 'new (x: number): void' a = a3; ~ !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => number' +!!! error TS2322: Type '(x: string) => number' provides no match for the signature 'new (x: number): void' a = function (x: string) { return ''; } ~ !!! error TS2322: Type '(x: string) => string' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => string' +!!! error TS2322: Type '(x: string) => string' provides no match for the signature 'new (x: number): void' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt index ab181157b6e..eacf758d935 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures2.errors.txt @@ -9,11 +9,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(34,1): error TS2322: Type 'S2' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(35,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(36,1): error TS2322: Type '(x: string) => number' is not assignable to type 'T'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(37,1): error TS2322: Type '(x: string) => string' is not assignable to type 'T'. @@ -21,11 +21,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(38,1): error TS2322: Type 'S2' is not assignable to type '{ f: new (x: number) => void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(39,1): error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f: new (x: number) => void; }'. Types of property 'f' are incompatible. Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. - Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' + Type '(x: string) => void' provides no match for the signature 'new (x: number): void' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(40,1): error TS2322: Type '(x: string) => number' is not assignable to type '{ f: new (x: number) => void; }'. Property 'f' is missing in type '(x: string) => number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures2.ts(41,1): error TS2322: Type '(x: string) => string' is not assignable to type '{ f: new (x: number) => void; }'. @@ -83,13 +83,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' t = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type 'T'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' t = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type 'T'. @@ -103,13 +103,13 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'S2' is not assignable to type '{ f: new (x: number) => void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' a = a3; ~ !!! error TS2322: Type '{ f(x: string): void; }' is not assignable to type '{ f: new (x: number) => void; }'. !!! error TS2322: Types of property 'f' are incompatible. !!! error TS2322: Type '(x: string) => void' is not assignable to type 'new (x: number) => void'. -!!! error TS2322: Signature 'new (x: number): void' has no corresponding signature in '(x: string) => void' +!!! error TS2322: Type '(x: string) => void' provides no match for the signature 'new (x: number): void' a = (x: string) => 1; ~ !!! error TS2322: Type '(x: string) => number' is not assignable to type '{ f: new (x: number) => void; }'. diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt index 8835b6280c4..6cd40f6c8c1 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures4.errors.txt @@ -11,14 +11,14 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(77,9): error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. Types of parameters 'x' and 'x' are incompatible. Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. - Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' + Type '(a: any) => any' provides no match for the signature 'new (a: number): number' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(78,9): error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. Types of parameters 'x' and 'x' are incompatible. Type '{ new (a: number): number; new (a?: number): number; }' is not assignable to type '(a: any) => any'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(81,9): error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. Types of parameters 'x' and 'x' are incompatible. Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. - Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' + Type '(a: any) => any' provides no match for the signature 'new (a: T): T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithConstructSignatures4.ts(82,9): error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. Types of parameters 'x' and 'x' are incompatible. Type '{ new (a: T): T; new (a: T): T; }' is not assignable to type '(a: any) => any'. @@ -118,7 +118,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'new (x: (a: T) => T) => T[]' is not assignable to type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: number): number; new (a?: number): number; }'. -!!! error TS2322: Signature 'new (a: number): number' has no corresponding signature in '(a: any) => any' +!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: number): number' b16 = a16; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: number): number; new (a?: number): number; }): number[]; new (x: { new (a: boolean): boolean; new (a?: boolean): boolean; }): boolean[]; }' is not assignable to type 'new (x: (a: T) => T) => T[]'. @@ -131,7 +131,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignme !!! error TS2322: Type 'new (x: (a: T) => T) => any[]' is not assignable to type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }'. !!! error TS2322: Types of parameters 'x' and 'x' are incompatible. !!! error TS2322: Type '(a: any) => any' is not assignable to type '{ new (a: T): T; new (a: T): T; }'. -!!! error TS2322: Signature 'new (a: T): T' has no corresponding signature in '(a: any) => any' +!!! error TS2322: Type '(a: any) => any' provides no match for the signature 'new (a: T): T' b17 = a17; // error ~~~ !!! error TS2322: Type '{ new (x: { new (a: T): T; new (a: T): T; }): any[]; new (x: { new (a: T): T; new (a: T): T; }): any[]; }' is not assignable to type 'new (x: (a: T) => T) => any[]'. diff --git a/tests/baselines/reference/assignmentCompatability24.errors.txt b/tests/baselines/reference/assignmentCompatability24.errors.txt index 69c0bd2b288..e49f0803b04 100644 --- a/tests/baselines/reference/assignmentCompatability24.errors.txt +++ b/tests/baselines/reference/assignmentCompatability24.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignmentCompatability24.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. - Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' + Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tstring): Tstring' ==== tests/cases/compiler/assignmentCompatability24.ts (1 errors) ==== @@ -14,4 +14,4 @@ tests/cases/compiler/assignmentCompatability24.ts(9,1): error TS2322: Type 'inte __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ !!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. -!!! error TS2322: Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tstring): Tstring' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability33.errors.txt b/tests/baselines/reference/assignmentCompatability33.errors.txt index 50e173b1202..386b3c5e292 100644 --- a/tests/baselines/reference/assignmentCompatability33.errors.txt +++ b/tests/baselines/reference/assignmentCompatability33.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignmentCompatability33.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. - Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' + Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tstring): Tstring' ==== tests/cases/compiler/assignmentCompatability33.ts (1 errors) ==== @@ -14,4 +14,4 @@ tests/cases/compiler/assignmentCompatability33.ts(9,1): error TS2322: Type 'inte __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ !!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tstring) => Tstring'. -!!! error TS2322: Signature '(a: Tstring): Tstring' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tstring): Tstring' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability34.errors.txt b/tests/baselines/reference/assignmentCompatability34.errors.txt index 2f0bca9dff2..fa91456b286 100644 --- a/tests/baselines/reference/assignmentCompatability34.errors.txt +++ b/tests/baselines/reference/assignmentCompatability34.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignmentCompatability34.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tnumber) => Tnumber'. - Signature '(a: Tnumber): Tnumber' has no corresponding signature in 'interfaceWithPublicAndOptional' + Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tnumber): Tnumber' ==== tests/cases/compiler/assignmentCompatability34.ts (1 errors) ==== @@ -14,4 +14,4 @@ tests/cases/compiler/assignmentCompatability34.ts(9,1): error TS2322: Type 'inte __test2__.__val__obj = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~~ !!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '(a: Tnumber) => Tnumber'. -!!! error TS2322: Signature '(a: Tnumber): Tnumber' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' provides no match for the signature '(a: Tnumber): Tnumber' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability37.errors.txt b/tests/baselines/reference/assignmentCompatability37.errors.txt index f965d49a0da..194e216f1ee 100644 --- a/tests/baselines/reference/assignmentCompatability37.errors.txt +++ b/tests/baselines/reference/assignmentCompatability37.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignmentCompatability37.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tnumber) => any'. - Signature 'new (param: Tnumber): any' has no corresponding signature in 'interfaceWithPublicAndOptional' + Type 'interfaceWithPublicAndOptional' provides no match for the signature 'new (param: Tnumber): any' ==== tests/cases/compiler/assignmentCompatability37.ts (1 errors) ==== @@ -14,4 +14,4 @@ tests/cases/compiler/assignmentCompatability37.ts(9,1): error TS2322: Type 'inte __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ !!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tnumber) => any'. -!!! error TS2322: Signature 'new (param: Tnumber): any' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' provides no match for the signature 'new (param: Tnumber): any' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability38.errors.txt b/tests/baselines/reference/assignmentCompatability38.errors.txt index 1a5540065cc..c15e5e31230 100644 --- a/tests/baselines/reference/assignmentCompatability38.errors.txt +++ b/tests/baselines/reference/assignmentCompatability38.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/assignmentCompatability38.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tstring) => any'. - Signature 'new (param: Tstring): any' has no corresponding signature in 'interfaceWithPublicAndOptional' + Type 'interfaceWithPublicAndOptional' provides no match for the signature 'new (param: Tstring): any' ==== tests/cases/compiler/assignmentCompatability38.ts (1 errors) ==== @@ -14,4 +14,4 @@ tests/cases/compiler/assignmentCompatability38.ts(9,1): error TS2322: Type 'inte __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ !!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type 'new (param: Tstring) => any'. -!!! error TS2322: Signature 'new (param: Tstring): any' has no corresponding signature in 'interfaceWithPublicAndOptional' \ No newline at end of file +!!! error TS2322: Type 'interfaceWithPublicAndOptional' provides no match for the signature 'new (param: Tstring): any' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObject.errors.txt b/tests/baselines/reference/assignmentToObject.errors.txt index 796f8430b84..ff5c9c12653 100644 --- a/tests/baselines/reference/assignmentToObject.errors.txt +++ b/tests/baselines/reference/assignmentToObject.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): string' ==== tests/cases/compiler/assignmentToObject.ts (1 errors) ==== @@ -12,5 +12,5 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): string' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt index 881b29bf443..e13dc8f1f64 100644 --- a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt +++ b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt @@ -1,13 +1,13 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(1,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): string' tests/cases/compiler/assignmentToObjectAndFunction.ts(8,5): error TS2322: Type '{}' is not assignable to type 'Function'. Property 'apply' is missing in type '{}'. tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type 'typeof bad' is not assignable to type 'Function'. Types of property 'apply' are incompatible. Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. - Signature '(thisArg: any, argArray?: any): any' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(thisArg: any, argArray?: any): any' ==== tests/cases/compiler/assignmentToObjectAndFunction.ts (3 errors) ==== @@ -16,7 +16,7 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): string' var goodObj: Object = { toString(x?) { return ""; @@ -52,4 +52,4 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type !!! error TS2322: Type 'typeof bad' is not assignable to type 'Function'. !!! error TS2322: Types of property 'apply' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. -!!! error TS2322: Signature '(thisArg: any, argArray?: any): any' has no corresponding signature in 'Number' \ No newline at end of file +!!! error TS2322: Type 'Number' provides no match for the signature '(thisArg: any, argArray?: any): any' \ No newline at end of file diff --git a/tests/baselines/reference/callConstructAssignment.errors.txt b/tests/baselines/reference/callConstructAssignment.errors.txt index e52d8b1f063..fc36e472151 100644 --- a/tests/baselines/reference/callConstructAssignment.errors.txt +++ b/tests/baselines/reference/callConstructAssignment.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/callConstructAssignment.ts(7,1): error TS2322: Type 'new () => any' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in 'new () => any' + Type 'new () => any' provides no match for the signature '(): void' tests/cases/compiler/callConstructAssignment.ts(8,1): error TS2322: Type '() => void' is not assignable to type 'new () => any'. - Signature 'new (): any' has no corresponding signature in '() => void' + Type '() => void' provides no match for the signature 'new (): any' ==== tests/cases/compiler/callConstructAssignment.ts (2 errors) ==== @@ -14,8 +14,8 @@ tests/cases/compiler/callConstructAssignment.ts(8,1): error TS2322: Type '() => foo = bar; // error ~~~ !!! error TS2322: Type 'new () => any' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'new () => any' +!!! error TS2322: Type 'new () => any' provides no match for the signature '(): void' bar = foo; // error ~~~ !!! error TS2322: Type '() => void' is not assignable to type 'new () => any'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' \ No newline at end of file +!!! error TS2322: Type '() => void' provides no match for the signature 'new (): any' \ No newline at end of file diff --git a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt index 5cb9a2e7f08..760bc9d8c43 100644 --- a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt +++ b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(7,1): error TS2322: Type 'typeof A' is not assignable to type 'new () => A'. Cannot assign an abstract constructor type to a non-abstract constructor type. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(8,1): error TS2322: Type 'string' is not assignable to type 'new () => A'. - Signature 'new (): A' has no corresponding signature in 'String' + Type 'String' provides no match for the signature 'new (): A' ==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts (2 errors) ==== @@ -18,4 +18,4 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst AAA = "asdf"; ~~~ !!! error TS2322: Type 'string' is not assignable to type 'new () => A'. -!!! error TS2322: Signature 'new (): A' has no corresponding signature in 'String' \ No newline at end of file +!!! error TS2322: Type 'String' provides no match for the signature 'new (): A' \ No newline at end of file diff --git a/tests/baselines/reference/constructorAsType.errors.txt b/tests/baselines/reference/constructorAsType.errors.txt index 3bf3dc688ed..7865a5ecac5 100644 --- a/tests/baselines/reference/constructorAsType.errors.txt +++ b/tests/baselines/reference/constructorAsType.errors.txt @@ -1,12 +1,12 @@ tests/cases/compiler/constructorAsType.ts(1,5): error TS2322: Type '() => { name: string; }' is not assignable to type 'new () => { name: string; }'. - Signature 'new (): { name: string; }' has no corresponding signature in '() => { name: string; }' + Type '() => { name: string; }' provides no match for the signature 'new (): { name: string; }' ==== tests/cases/compiler/constructorAsType.ts (1 errors) ==== var Person:new () => {name: string;} = function () {return {name:"joe"};}; ~~~~~~ !!! error TS2322: Type '() => { name: string; }' is not assignable to type 'new () => { name: string; }'. -!!! error TS2322: Signature 'new (): { name: string; }' has no corresponding signature in '() => { name: string; }' +!!! error TS2322: Type '() => { name: string; }' provides no match for the signature 'new (): { name: string; }' var Person2:{new() : {name:string;};}; diff --git a/tests/baselines/reference/contextualTyping24.errors.txt b/tests/baselines/reference/contextualTyping24.errors.txt index 68cb8e3d853..57a5543e57a 100644 --- a/tests/baselines/reference/contextualTyping24.errors.txt +++ b/tests/baselines/reference/contextualTyping24.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. Types of parameters 'a' and 'a' are incompatible. Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. - Signature '(): number' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): number' ==== tests/cases/compiler/contextualTyping24.ts (1 errors) ==== @@ -10,4 +10,4 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string !!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. !!! error TS2322: Types of parameters 'a' and 'a' are incompatible. !!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. -!!! error TS2322: Signature '(): number' has no corresponding signature in 'String' \ No newline at end of file +!!! error TS2322: Type 'String' provides no match for the signature '(): number' \ No newline at end of file diff --git a/tests/baselines/reference/enumAssignability.errors.txt b/tests/baselines/reference/enumAssignability.errors.txt index 55e28ed97d9..5b12f6f941e 100644 --- a/tests/baselines/reference/enumAssignability.errors.txt +++ b/tests/baselines/reference/enumAssignability.errors.txt @@ -6,11 +6,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi Property 'toDateString' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(33,9): error TS2322: Type 'E' is not assignable to type 'void'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(36,9): error TS2322: Type 'E' is not assignable to type '() => {}'. - Signature '(): {}' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): {}' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(37,9): error TS2322: Type 'E' is not assignable to type 'Function'. Property 'apply' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(38,9): error TS2322: Type 'E' is not assignable to type '(x: number) => string'. - Signature '(x: number): string' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(x: number): string' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(39,5): error TS2322: Type 'E' is not assignable to type 'C'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(40,5): error TS2322: Type 'E' is not assignable to type 'I'. @@ -20,7 +20,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(42,9): error TS2322: Type 'E' is not assignable to type '{ foo: string; }'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(43,9): error TS2322: Type 'E' is not assignable to type '(x: T) => T'. - Signature '(x: T): T' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(x: T): T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(45,9): error TS2322: Type 'E' is not assignable to type 'String'. Property 'charAt' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(47,21): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. @@ -83,7 +83,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var j: () => {} = e; ~ !!! error TS2322: Type 'E' is not assignable to type '() => {}'. -!!! error TS2322: Signature '(): {}' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): {}' var k: Function = e; ~ !!! error TS2322: Type 'E' is not assignable to type 'Function'. @@ -91,7 +91,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var l: (x: number) => string = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: number) => string'. -!!! error TS2322: Signature '(x: number): string' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(x: number): string' ac = e; ~~ !!! error TS2322: Type 'E' is not assignable to type 'C'. @@ -111,7 +111,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var o: (x: T) => T = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: T) => T'. -!!! error TS2322: Signature '(x: T): T' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(x: T): T' var p: Number = e; var q: String = e; ~ diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt index 24dcb4dee53..528d14cf12b 100644 --- a/tests/baselines/reference/for-of30.errors.txt +++ b/tests/baselines/reference/for-of30.errors.txt @@ -4,7 +4,7 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty Type 'StringIterator' is not assignable to type 'Iterator'. Types of property 'return' are incompatible. Type 'number' is not assignable to type '(value?: any) => IteratorResult'. - Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(value?: any): IteratorResult' ==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ==== @@ -16,7 +16,7 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. !!! error TS2322: Types of property 'return' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Signature '(value?: any): IteratorResult' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(value?: any): IteratorResult' class StringIterator { next() { diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt index bfcb8bc8a3b..4f78636d08c 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt +++ b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt @@ -3,21 +3,21 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(6,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(7,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(23,14): error TS2345: Argument of type 'Function' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'Function' + Type 'Function' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(24,15): error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. Types of parameters 'x' and 'x' are incompatible. Type 'string[]' is not assignable to type 'string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(25,15): error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'typeof C' + Type 'typeof C' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(26,15): error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'new (x: string) => string' + Type 'new (x: string) => string' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(28,16): error TS2345: Argument of type '(x: U, y: V) => U' is not assignable to parameter of type '(x: string) => string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(29,16): error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'typeof C2' + Type 'typeof C2' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(30,16): error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'new (x: T) => T' + Type 'new (x: T) => T' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(34,16): error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. - Signature '(x: string): string' has no corresponding signature in 'F2' + Type 'F2' provides no match for the signature '(x: string): string' tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(36,38): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(37,10): error TS2345: Argument of type 'T' is not assignable to parameter of type '(x: string) => string'. Type '() => void' is not assignable to type '(x: string) => string'. @@ -57,7 +57,7 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r = foo2(new Function()); ~~~~~~~~~~~~~~ !!! error TS2345: Argument of type 'Function' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'Function' +!!! error TS2345: Type 'Function' provides no match for the signature '(x: string): string' var r2 = foo2((x: string[]) => x); ~~~~~~~~~~~~~~~~~~ !!! error TS2345: Argument of type '(x: string[]) => string[]' is not assignable to parameter of type '(x: string) => string'. @@ -66,11 +66,11 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r6 = foo2(C); ~ !!! error TS2345: Argument of type 'typeof C' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'typeof C' +!!! error TS2345: Type 'typeof C' provides no match for the signature '(x: string): string' var r7 = foo2(b); ~ !!! error TS2345: Argument of type 'new (x: string) => string' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'new (x: string) => string' +!!! error TS2345: Type 'new (x: string) => string' provides no match for the signature '(x: string): string' var r8 = foo2((x: U) => x); // no error expected var r11 = foo2((x: U, y: V) => x); ~~~~~~~~~~~~~~~~~~~~~~~ @@ -78,18 +78,18 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain var r13 = foo2(C2); ~~ !!! error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'typeof C2' +!!! error TS2345: Type 'typeof C2' provides no match for the signature '(x: string): string' var r14 = foo2(b2); ~~ !!! error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'new (x: T) => T' +!!! error TS2345: Type 'new (x: T) => T' provides no match for the signature '(x: string): string' interface F2 extends Function { foo: string; } var f2: F2; var r16 = foo2(f2); ~~ !!! error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. -!!! error TS2345: Signature '(x: string): string' has no corresponding signature in 'F2' +!!! error TS2345: Type 'F2' provides no match for the signature '(x: string): string' function fff(x: T, y: U) { ~~~~~~~~~~~ diff --git a/tests/baselines/reference/generatorTypeCheck31.errors.txt b/tests/baselines/reference/generatorTypeCheck31.errors.txt index 9b77bb178c9..3f54edacb2a 100644 --- a/tests/baselines/reference/generatorTypeCheck31.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck31.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts(2,11): error TS2322: Type 'IterableIterator<(x: any) => any>' is not assignable to type '() => Iterable<(x: string) => number>'. - Signature '(): Iterable<(x: string) => number>' has no corresponding signature in 'IterableIterator<(x: any) => any>' + Type 'IterableIterator<(x: any) => any>' provides no match for the signature '(): Iterable<(x: string) => number>' ==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts (1 errors) ==== @@ -11,5 +11,5 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck31.ts(2,11): erro } () ~~~~~~~~ !!! error TS2322: Type 'IterableIterator<(x: any) => any>' is not assignable to type '() => Iterable<(x: string) => number>'. -!!! error TS2322: Signature '(): Iterable<(x: string) => number>' has no corresponding signature in 'IterableIterator<(x: any) => any>' +!!! error TS2322: Type 'IterableIterator<(x: any) => any>' provides no match for the signature '(): Iterable<(x: string) => number>' } \ No newline at end of file diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt index 52c5e03912e..18febd754a4 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt @@ -3,7 +3,7 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(33,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. - Signature '(n: Object): number' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(n: Object): number' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts (2 errors) ==== @@ -47,4 +47,4 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen ~~~~ !!! error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. !!! error TS2453: Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. -!!! error TS2453: Signature '(n: Object): number' has no corresponding signature in 'Number' \ No newline at end of file +!!! error TS2453: Type 'Number' provides no match for the signature '(n: Object): number' \ No newline at end of file diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index 2d6af3a74e2..131beacbeae 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -23,7 +23,7 @@ tests/cases/compiler/incompatibleTypes.ts(49,7): error TS2345: Argument of type tests/cases/compiler/incompatibleTypes.ts(66,47): error TS2322: Type '{ e: number; f: number; }' is not assignable to type '{ a: { a: string; }; b: string; }'. Object literal may only specify known properties, and 'e' does not exist in type '{ a: { a: string; }; b: string; }'. tests/cases/compiler/incompatibleTypes.ts(72,5): error TS2322: Type 'number' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): string' tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. @@ -133,7 +133,7 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => var i1c1: { (): string; } = 5; ~~~~ !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): string' var fp1: () =>any = a => 0; ~~~ diff --git a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt index 25dd3c2ef3b..afa0f8e73b4 100644 --- a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(7,7): error TS2415: Class 'b' incorrectly extends base class 'a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): string' tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS2423: Class 'a' defines instance member function 'x', but extended class 'b' defines it as instance member accessor. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -19,7 +19,7 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error T !!! error TS2415: Class 'b' incorrectly extends base class 'a'. !!! error TS2415: Types of property 'x' are incompatible. !!! error TS2415: Type 'string' is not assignable to type '() => string'. -!!! error TS2415: Signature '(): string' has no corresponding signature in 'String' +!!! error TS2415: Type 'String' provides no match for the signature '(): string' get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt index 646047f8633..ac3ea03cbb8 100644 --- a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): string' tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(8,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -18,7 +18,7 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. -!!! error TS2417: Signature '(): string' has no corresponding signature in 'String' +!!! error TS2417: Type 'String' provides no match for the signature '(): string' static get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt index 5e983c0d806..70bed434978 100644 --- a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): string' ==== tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts (1 errors) ==== @@ -16,6 +16,6 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. -!!! error TS2417: Signature '(): string' has no corresponding signature in 'String' +!!! error TS2417: Type 'String' provides no match for the signature '(): string' static x: string; } \ No newline at end of file diff --git a/tests/baselines/reference/intTypeCheck.errors.txt b/tests/baselines/reference/intTypeCheck.errors.txt index 02592bedb69..b6f8afa3030 100644 --- a/tests/baselines/reference/intTypeCheck.errors.txt +++ b/tests/baselines/reference/intTypeCheck.errors.txt @@ -14,27 +14,27 @@ tests/cases/compiler/intTypeCheck.ts(106,20): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(106,21): error TS2304: Cannot find name 'i1'. tests/cases/compiler/intTypeCheck.ts(107,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(112,5): error TS2322: Type '{}' is not assignable to type 'i2'. - Signature '(): any' has no corresponding signature in '{}' + Type '{}' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(113,5): error TS2322: Type 'Object' is not assignable to type 'i2'. - Signature '(): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(114,17): error TS2350: Only a void function can be called with the 'new' keyword. tests/cases/compiler/intTypeCheck.ts(115,5): error TS2322: Type 'Base' is not assignable to type 'i2'. - Signature '(): any' has no corresponding signature in 'Base' + Type 'Base' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(120,5): error TS2322: Type 'boolean' is not assignable to type 'i2'. - Signature '(): any' has no corresponding signature in 'Boolean' + Type 'Boolean' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(120,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(120,22): error TS2304: Cannot find name 'i2'. tests/cases/compiler/intTypeCheck.ts(121,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(126,5): error TS2322: Type '{}' is not assignable to type 'i3'. - Signature 'new (): any' has no corresponding signature in '{}' + Type '{}' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(127,5): error TS2322: Type 'Object' is not assignable to type 'i3'. - Signature 'new (): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(129,5): error TS2322: Type 'Base' is not assignable to type 'i3'. - Signature 'new (): any' has no corresponding signature in 'Base' + Type 'Base' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(131,5): error TS2322: Type '() => void' is not assignable to type 'i3'. - Signature 'new (): any' has no corresponding signature in '() => void' + Type '() => void' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(134,5): error TS2322: Type 'boolean' is not assignable to type 'i3'. - Signature 'new (): any' has no corresponding signature in 'Boolean' + Type 'Boolean' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(134,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(134,22): error TS2304: Cannot find name 'i3'. tests/cases/compiler/intTypeCheck.ts(135,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -59,29 +59,29 @@ tests/cases/compiler/intTypeCheck.ts(162,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(162,22): error TS2304: Cannot find name 'i5'. tests/cases/compiler/intTypeCheck.ts(163,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(168,5): error TS2322: Type '{}' is not assignable to type 'i6'. - Signature '(): any' has no corresponding signature in '{}' + Type '{}' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(169,5): error TS2322: Type 'Object' is not assignable to type 'i6'. - Signature '(): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(170,17): error TS2350: Only a void function can be called with the 'new' keyword. tests/cases/compiler/intTypeCheck.ts(171,5): error TS2322: Type 'Base' is not assignable to type 'i6'. - Signature '(): any' has no corresponding signature in 'Base' + Type 'Base' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(173,5): error TS2322: Type '() => void' is not assignable to type 'i6'. Type 'void' is not assignable to type 'number'. tests/cases/compiler/intTypeCheck.ts(176,5): error TS2322: Type 'boolean' is not assignable to type 'i6'. - Signature '(): any' has no corresponding signature in 'Boolean' + Type 'Boolean' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(176,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(176,22): error TS2304: Cannot find name 'i6'. tests/cases/compiler/intTypeCheck.ts(177,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. tests/cases/compiler/intTypeCheck.ts(182,5): error TS2322: Type '{}' is not assignable to type 'i7'. - Signature 'new (): any' has no corresponding signature in '{}' + Type '{}' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(183,5): error TS2322: Type 'Object' is not assignable to type 'i7'. - Signature 'new (): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(185,17): error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. - Signature 'new (): any' has no corresponding signature in 'Base' + Type 'Base' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(187,5): error TS2322: Type '() => void' is not assignable to type 'i7'. - Signature 'new (): any' has no corresponding signature in '() => void' + Type '() => void' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(190,5): error TS2322: Type 'boolean' is not assignable to type 'i7'. - Signature 'new (): any' has no corresponding signature in 'Boolean' + Type 'Boolean' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(190,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(190,22): error TS2304: Cannot find name 'i7'. tests/cases/compiler/intTypeCheck.ts(191,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -234,18 +234,18 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj12: i2 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i2'. -!!! error TS2322: Signature '(): any' has no corresponding signature in '{}' +!!! error TS2322: Type '{}' provides no match for the signature '(): any' var obj13: i2 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i2'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature '(): any' var obj14: i2 = new obj11; ~~~~~~~~~ !!! error TS2350: Only a void function can be called with the 'new' keyword. var obj15: i2 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i2'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Base' +!!! error TS2322: Type 'Base' provides no match for the signature '(): any' var obj16: i2 = null; var obj17: i2 = function ():any { return 0; }; //var obj18: i2 = function foo() { }; @@ -253,7 +253,7 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj20: i2 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i2'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Boolean' +!!! error TS2322: Type 'Boolean' provides no match for the signature '(): any' ~ !!! error TS1109: Expression expected. ~~ @@ -268,27 +268,27 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj23: i3 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i3'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{}' +!!! error TS2322: Type '{}' provides no match for the signature 'new (): any' var obj24: i3 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i3'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature 'new (): any' var obj25: i3 = new obj22; var obj26: i3 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i3'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Base' +!!! error TS2322: Type 'Base' provides no match for the signature 'new (): any' var obj27: i3 = null; var obj28: i3 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i3'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' +!!! error TS2322: Type '() => void' provides no match for the signature 'new (): any' //var obj29: i3 = function foo() { }; var obj30: i3 = anyVar; var obj31: i3 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i3'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Boolean' +!!! error TS2322: Type 'Boolean' provides no match for the signature 'new (): any' ~ !!! error TS1109: Expression expected. ~~ @@ -365,18 +365,18 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj56: i6 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i6'. -!!! error TS2322: Signature '(): any' has no corresponding signature in '{}' +!!! error TS2322: Type '{}' provides no match for the signature '(): any' var obj57: i6 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i6'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature '(): any' var obj58: i6 = new obj55; ~~~~~~~~~ !!! error TS2350: Only a void function can be called with the 'new' keyword. var obj59: i6 = new Base; ~~~~~ !!! error TS2322: Type 'Base' is not assignable to type 'i6'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Base' +!!! error TS2322: Type 'Base' provides no match for the signature '(): any' var obj60: i6 = null; var obj61: i6 = function () { }; ~~~~~ @@ -387,7 +387,7 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj64: i6 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i6'. -!!! error TS2322: Signature '(): any' has no corresponding signature in 'Boolean' +!!! error TS2322: Type 'Boolean' provides no match for the signature '(): any' ~ !!! error TS1109: Expression expected. ~~ @@ -402,27 +402,27 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj67: i7 = {}; ~~~~~ !!! error TS2322: Type '{}' is not assignable to type 'i7'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{}' +!!! error TS2322: Type '{}' provides no match for the signature 'new (): any' var obj68: i7 = new Object(); ~~~~~ !!! error TS2322: Type 'Object' is not assignable to type 'i7'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature 'new (): any' var obj69: i7 = new obj66; var obj70: i7 = new Base; ~~~~~~~~~~~~ !!! error TS2352: Neither type 'Base' nor type 'i7' is assignable to the other. -!!! error TS2352: Signature 'new (): any' has no corresponding signature in 'Base' +!!! error TS2352: Type 'Base' provides no match for the signature 'new (): any' var obj71: i7 = null; var obj72: i7 = function () { }; ~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'i7'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '() => void' +!!! error TS2322: Type '() => void' provides no match for the signature 'new (): any' //var obj73: i7 = function foo() { }; var obj74: i7 = anyVar; var obj75: i7 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i7'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Boolean' +!!! error TS2322: Type 'Boolean' provides no match for the signature 'new (): any' ~ !!! error TS1109: Expression expected. ~~ diff --git a/tests/baselines/reference/interfaceImplementation1.errors.txt b/tests/baselines/reference/interfaceImplementation1.errors.txt index 826e5650c83..e5e1a212a06 100644 --- a/tests/baselines/reference/interfaceImplementation1.errors.txt +++ b/tests/baselines/reference/interfaceImplementation1.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' tests/cases/compiler/interfaceImplementation1.ts(12,7): error TS2420: Class 'C1' incorrectly implements interface 'I2'. Property 'iFn' is private in type 'C1' but not in type 'I2'. tests/cases/compiler/interfaceImplementation1.ts(34,5): error TS2322: Type '() => C2' is not assignable to type 'I4'. - Signature 'new (): I3' has no corresponding signature in '() => C2' + Type '() => C2' provides no match for the signature 'new (): I3' ==== tests/cases/compiler/interfaceImplementation1.ts (3 errors) ==== @@ -49,7 +49,7 @@ tests/cases/compiler/interfaceImplementation1.ts(34,5): error TS2322: Type '() = var a:I4 = function(){ ~ !!! error TS2322: Type '() => C2' is not assignable to type 'I4'. -!!! error TS2322: Signature 'new (): I3' has no corresponding signature in '() => C2' +!!! error TS2322: Type '() => C2' provides no match for the signature 'new (): I3' return new C2(); } new a(); diff --git a/tests/baselines/reference/invalidBooleanAssignments.errors.txt b/tests/baselines/reference/invalidBooleanAssignments.errors.txt index ddedc16f28d..85184de6607 100644 --- a/tests/baselines/reference/invalidBooleanAssignments.errors.txt +++ b/tests/baselines/reference/invalidBooleanAssignments.errors.txt @@ -7,7 +7,7 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(12 tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(15,5): error TS2322: Type 'boolean' is not assignable to type 'I'. Property 'bar' is missing in type 'Boolean'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(17,5): error TS2322: Type 'boolean' is not assignable to type '() => string'. - Signature '(): string' has no corresponding signature in 'Boolean' + Type 'Boolean' provides no match for the signature '(): string' tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(21,1): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(24,5): error TS2322: Type 'boolean' is not assignable to type 'T'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26,1): error TS2364: Invalid left-hand side of assignment expression. @@ -47,7 +47,7 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26 var h: { (): string } = x; ~ !!! error TS2322: Type 'boolean' is not assignable to type '() => string'. -!!! error TS2322: Signature '(): string' has no corresponding signature in 'Boolean' +!!! error TS2322: Type 'Boolean' provides no match for the signature '(): string' var h2: { toString(): string } = x; // no error module M { export var a = 1; } diff --git a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt index 6767d053498..e296f2113fb 100644 --- a/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. - Signature '(): void' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): void' tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts(14,1): error TS2322: Type 'Object' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): void' ==== tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOfFunctionAssignmentCompat.ts (2 errors) ==== @@ -15,7 +15,7 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOf i = f; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature '(): void' var a: { (): void @@ -24,4 +24,4 @@ tests/cases/conformance/types/members/objectTypeWithCallSignatureHidingMembersOf a = f; ~ !!! error TS2322: Type 'Object' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' \ No newline at end of file +!!! error TS2322: Type 'Object' provides no match for the signature '(): void' \ No newline at end of file diff --git a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt index 92fdf725efe..227ccc99603 100644 --- a/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt +++ b/tests/baselines/reference/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. - Signature 'new (): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature 'new (): any' tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts(14,1): error TS2322: Type 'Object' is not assignable to type 'new () => any'. - Signature 'new (): any' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature 'new (): any' ==== tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMembersOfFunctionAssignmentCompat.ts (2 errors) ==== @@ -15,7 +15,7 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMemb i = f; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature 'new (): any' var a: { new(): any @@ -24,4 +24,4 @@ tests/cases/conformance/types/members/objectTypeWithConstructSignatureHidingMemb a = f; ~ !!! error TS2322: Type 'Object' is not assignable to type 'new () => any'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in 'Object' \ No newline at end of file +!!! error TS2322: Type 'Object' provides no match for the signature 'new (): any' \ No newline at end of file diff --git a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt index 3b8d8c80e58..4b502f145a6 100644 --- a/tests/baselines/reference/overloadOnConstInheritance2.errors.txt +++ b/tests/baselines/reference/overloadOnConstInheritance2.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(5,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. Types of property 'addEventListener' are incompatible. Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. - Signature '(x: string): any' has no corresponding signature in '(x: "bar") => string' + Type '(x: "bar") => string' provides no match for the signature '(x: string): any' tests/cases/compiler/overloadOnConstInheritance2.ts(6,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. @@ -15,7 +15,7 @@ tests/cases/compiler/overloadOnConstInheritance2.ts(6,5): error TS2382: Speciali !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'addEventListener' are incompatible. !!! error TS2430: Type '(x: "bar") => string' is not assignable to type '{ (x: string): any; (x: "foo"): string; }'. -!!! error TS2430: Signature '(x: string): any' has no corresponding signature in '(x: "bar") => string' +!!! error TS2430: Type '(x: "bar") => string' provides no match for the signature '(x: string): any' addEventListener(x: 'bar'): string; // shouldn't need to redeclare the string overload ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2382: Specialized overload signature is not assignable to any non-specialized signature. diff --git a/tests/baselines/reference/overloadOnConstInheritance3.errors.txt b/tests/baselines/reference/overloadOnConstInheritance3.errors.txt index 062db72ac51..6d9f9b00692 100644 --- a/tests/baselines/reference/overloadOnConstInheritance3.errors.txt +++ b/tests/baselines/reference/overloadOnConstInheritance3.errors.txt @@ -1,7 +1,7 @@ tests/cases/compiler/overloadOnConstInheritance3.ts(4,11): error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. Types of property 'addEventListener' are incompatible. Type '{ (x: "bar"): string; (x: "foo"): string; }' is not assignable to type '(x: string) => any'. - Signature '(x: string): any' has no corresponding signature in '{ (x: "bar"): string; (x: "foo"): string; }' + Type '{ (x: "bar"): string; (x: "foo"): string; }' provides no match for the signature '(x: string): any' tests/cases/compiler/overloadOnConstInheritance3.ts(6,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/compiler/overloadOnConstInheritance3.ts(7,5): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. @@ -15,7 +15,7 @@ tests/cases/compiler/overloadOnConstInheritance3.ts(7,5): error TS2382: Speciali !!! error TS2430: Interface 'Deriver' incorrectly extends interface 'Base'. !!! error TS2430: Types of property 'addEventListener' are incompatible. !!! error TS2430: Type '{ (x: "bar"): string; (x: "foo"): string; }' is not assignable to type '(x: string) => any'. -!!! error TS2430: Signature '(x: string): any' has no corresponding signature in '{ (x: "bar"): string; (x: "foo"): string; }' +!!! error TS2430: Type '{ (x: "bar"): string; (x: "foo"): string; }' provides no match for the signature '(x: string): any' // shouldn't need to redeclare the string overload addEventListener(x: 'bar'): string; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/parseTypes.errors.txt b/tests/baselines/reference/parseTypes.errors.txt index bc628ac485b..cf8b0d79115 100644 --- a/tests/baselines/reference/parseTypes.errors.txt +++ b/tests/baselines/reference/parseTypes.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/parseTypes.ts(10,1): error TS2322: Type '(s: string) => voi tests/cases/compiler/parseTypes.ts(11,1): error TS2322: Type '(s: string) => void' is not assignable to type '{ [x: number]: number; }'. Index signature is missing in type '(s: string) => void'. tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => void' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in '(s: string) => void' + Type '(s: string) => void' provides no match for the signature 'new (): number' ==== tests/cases/compiler/parseTypes.ts (4 errors) ==== @@ -28,5 +28,5 @@ tests/cases/compiler/parseTypes.ts(12,1): error TS2322: Type '(s: string) => voi z=g; ~ !!! error TS2322: Type '(s: string) => void' is not assignable to type 'new () => number'. -!!! error TS2322: Signature 'new (): number' has no corresponding signature in '(s: string) => void' +!!! error TS2322: Type '(s: string) => void' provides no match for the signature 'new (): number' \ No newline at end of file diff --git a/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt b/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt index 5eebe963b90..9ffdc614ab1 100644 --- a/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt +++ b/tests/baselines/reference/parserAutomaticSemicolonInsertion1.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts(8,1): error TS2322: Type 'Object' is not assignable to type 'I'. - Signature '(): void' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): void' tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts(14,1): error TS2322: Type 'Object' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in 'Object' + Type 'Object' provides no match for the signature '(): void' ==== tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAutomaticSemicolonInsertion1.ts (2 errors) ==== @@ -15,7 +15,7 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAut i = o; ~ !!! error TS2322: Type 'Object' is not assignable to type 'I'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature '(): void' var a: { (): void @@ -24,5 +24,5 @@ tests/cases/conformance/parser/ecmascript5/AutomaticSemicolonInsertion/parserAut a = o; ~ !!! error TS2322: Type 'Object' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Object' +!!! error TS2322: Type 'Object' provides no match for the signature '(): void' \ No newline at end of file diff --git a/tests/baselines/reference/propertyAssignment.errors.txt b/tests/baselines/reference/propertyAssignment.errors.txt index ae65ed9b73a..815d0a44d53 100644 --- a/tests/baselines/reference/propertyAssignment.errors.txt +++ b/tests/baselines/reference/propertyAssignment.errors.txt @@ -1,9 +1,9 @@ tests/cases/compiler/propertyAssignment.ts(6,13): error TS1170: A computed property name in a type literal must directly refer to a built-in symbol. tests/cases/compiler/propertyAssignment.ts(6,14): error TS2304: Cannot find name 'index'. tests/cases/compiler/propertyAssignment.ts(14,1): error TS2322: Type '{ x: number; }' is not assignable to type 'new () => any'. - Signature 'new (): any' has no corresponding signature in '{ x: number; }' + Type '{ x: number; }' provides no match for the signature 'new (): any' tests/cases/compiler/propertyAssignment.ts(16,1): error TS2322: Type '{ x: number; }' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in '{ x: number; }' + Type '{ x: number; }' provides no match for the signature '(): void' ==== tests/cases/compiler/propertyAssignment.ts (4 errors) ==== @@ -27,9 +27,9 @@ tests/cases/compiler/propertyAssignment.ts(16,1): error TS2322: Type '{ x: numbe foo1 = bar1; // should be an error ~~~~ !!! error TS2322: Type '{ x: number; }' is not assignable to type 'new () => any'. -!!! error TS2322: Signature 'new (): any' has no corresponding signature in '{ x: number; }' +!!! error TS2322: Type '{ x: number; }' provides no match for the signature 'new (): any' foo2 = bar2; foo3 = bar3; // should be an error ~~~~ !!! error TS2322: Type '{ x: number; }' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in '{ x: number; }' \ No newline at end of file +!!! error TS2322: Type '{ x: number; }' provides no match for the signature '(): void' \ No newline at end of file diff --git a/tests/baselines/reference/qualify.errors.txt b/tests/baselines/reference/qualify.errors.txt index 822b329b757..f38fc93ccde 100644 --- a/tests/baselines/reference/qualify.errors.txt +++ b/tests/baselines/reference/qualify.errors.txt @@ -7,9 +7,9 @@ tests/cases/compiler/qualify.ts(45,13): error TS2322: Type 'I4' is not assignabl tests/cases/compiler/qualify.ts(46,13): error TS2322: Type 'I4' is not assignable to type 'I3[]'. Property 'length' is missing in type 'I4'. tests/cases/compiler/qualify.ts(47,13): error TS2322: Type 'I4' is not assignable to type '() => I3'. - Signature '(): I3' has no corresponding signature in 'I4' + Type 'I4' provides no match for the signature '(): I3' tests/cases/compiler/qualify.ts(48,13): error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. - Signature '(k: I3): void' has no corresponding signature in 'I4' + Type 'I4' provides no match for the signature '(k: I3): void' tests/cases/compiler/qualify.ts(49,13): error TS2322: Type 'I4' is not assignable to type '{ k: I3; }'. Property 'k' is missing in type 'I4'. tests/cases/compiler/qualify.ts(58,5): error TS2322: Type 'I' is not assignable to type 'T.I'. @@ -78,11 +78,11 @@ tests/cases/compiler/qualify.ts(58,5): error TS2322: Type 'I' is not assignable var v4:()=>K1.I3=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '() => I3'. -!!! error TS2322: Signature '(): I3' has no corresponding signature in 'I4' +!!! error TS2322: Type 'I4' provides no match for the signature '(): I3' var v5:(k:K1.I3)=>void=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '(k: I3) => void'. -!!! error TS2322: Signature '(k: I3): void' has no corresponding signature in 'I4' +!!! error TS2322: Type 'I4' provides no match for the signature '(k: I3): void' var v6:{k:K1.I3;}=v1; ~~ !!! error TS2322: Type 'I4' is not assignable to type '{ k: I3; }'. diff --git a/tests/baselines/reference/recursiveFunctionTypes.errors.txt b/tests/baselines/reference/recursiveFunctionTypes.errors.txt index 4c1b392245f..53993a06c60 100644 --- a/tests/baselines/reference/recursiveFunctionTypes.errors.txt +++ b/tests/baselines/reference/recursiveFunctionTypes.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/recursiveFunctionTypes.ts(1,35): error TS2322: Type 'number' is not assignable to type '() => typeof fn'. - Signature '(): () => typeof fn' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): () => typeof fn' tests/cases/compiler/recursiveFunctionTypes.ts(3,5): error TS2322: Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. Type '() => typeof fn' is not assignable to type 'number'. @@ -7,23 +7,23 @@ tests/cases/compiler/recursiveFunctionTypes.ts(11,16): error TS2355: A function tests/cases/compiler/recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. - Signature '(t: (t: typeof g) => void): void' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(t: (t: typeof g) => void): void' tests/cases/compiler/recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => any'. - Signature '(): () => any' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(): () => any' tests/cases/compiler/recursiveFunctionTypes.ts(30,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/compiler/recursiveFunctionTypes.ts(33,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. - Signature '(): { (): typeof f6; (a: typeof f6): () => number; }' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): { (): typeof f6; (a: typeof f6): () => number; }' tests/cases/compiler/recursiveFunctionTypes.ts(42,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. - Signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' has no corresponding signature in 'String' + Type 'String' provides no match for the signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' ==== tests/cases/compiler/recursiveFunctionTypes.ts (13 errors) ==== function fn(): typeof fn { return 1; } ~ !!! error TS2322: Type 'number' is not assignable to type '() => typeof fn'. -!!! error TS2322: Signature '(): () => typeof fn' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): () => typeof fn' var x: number = fn; // error ~ @@ -58,13 +58,13 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of C.g(3); // error ~ !!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. -!!! error TS2345: Signature '(t: (t: typeof g) => void): void' has no corresponding signature in 'Number' +!!! error TS2345: Type 'Number' provides no match for the signature '(t: (t: typeof g) => void): void' var f4: () => typeof f4; f4 = 3; // error ~~ !!! error TS2322: Type 'number' is not assignable to type '() => any'. -!!! error TS2322: Signature '(): () => any' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(): () => any' function f5() { return f5; } @@ -80,7 +80,7 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f6(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. -!!! error TS2345: Signature '(): { (): typeof f6; (a: typeof f6): () => number; }' has no corresponding signature in 'String' +!!! error TS2345: Type 'String' provides no match for the signature '(): { (): typeof f6; (a: typeof f6): () => number; }' f6(); // ok declare function f7(): typeof f7; @@ -94,5 +94,5 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f7(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. -!!! error TS2345: Signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' has no corresponding signature in 'String' +!!! error TS2345: Type 'String' provides no match for the signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' f7(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/targetTypeVoidFunc.errors.txt b/tests/baselines/reference/targetTypeVoidFunc.errors.txt index daa25885729..d47f811c2ed 100644 --- a/tests/baselines/reference/targetTypeVoidFunc.errors.txt +++ b/tests/baselines/reference/targetTypeVoidFunc.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/targetTypeVoidFunc.ts(2,12): error TS2322: Type '() => void' is not assignable to type 'new () => number'. - Signature 'new (): number' has no corresponding signature in '() => void' + Type '() => void' provides no match for the signature 'new (): number' ==== tests/cases/compiler/targetTypeVoidFunc.ts (1 errors) ==== @@ -7,7 +7,7 @@ tests/cases/compiler/targetTypeVoidFunc.ts(2,12): error TS2322: Type '() => void return function () { return; } ~~~~~~~~ !!! error TS2322: Type '() => void' is not assignable to type 'new () => number'. -!!! error TS2322: Signature 'new (): number' has no corresponding signature in '() => void' +!!! error TS2322: Type '() => void' provides no match for the signature 'new (): number' }; var x = f1(); diff --git a/tests/baselines/reference/typeName1.errors.txt b/tests/baselines/reference/typeName1.errors.txt index e77e7c58535..a55754221ce 100644 --- a/tests/baselines/reference/typeName1.errors.txt +++ b/tests/baselines/reference/typeName1.errors.txt @@ -3,7 +3,7 @@ tests/cases/compiler/typeName1.ts(9,5): error TS2322: Type 'number' is not assig tests/cases/compiler/typeName1.ts(10,5): error TS2322: Type 'number' is not assignable to type '{ f(s: string): number; }'. Property 'f' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(11,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. - Signature '(s: string): number' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(s: string): number' tests/cases/compiler/typeName1.ts(12,5): error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. Property 'x' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -11,7 +11,7 @@ tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assi tests/cases/compiler/typeName1.ts(14,5): error TS2322: Type 'number' is not assignable to type '{ z: number; f: { (n: number): string; (s: string): number; }; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(15,5): error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. - Signature '(s: string): boolean' has no corresponding signature in 'Number' + Type 'Number' provides no match for the signature '(s: string): boolean' tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. @@ -51,7 +51,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x3:{ (s:string):number;(n:number):string; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. -!!! error TS2322: Signature '(s: string): number' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(s: string): number' var x4:{ x;y;z:number;f(n:number):string;f(s:string):number; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -67,7 +67,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x7:(s:string)=>boolean=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. -!!! error TS2322: Signature '(s: string): boolean' has no corresponding signature in 'Number' +!!! error TS2322: Type 'Number' provides no match for the signature '(s: string): boolean' var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. diff --git a/tests/baselines/reference/typesWithPrivateConstructor.errors.txt b/tests/baselines/reference/typesWithPrivateConstructor.errors.txt index d2a4e766ebc..261038a1f4a 100644 --- a/tests/baselines/reference/typesWithPrivateConstructor.errors.txt +++ b/tests/baselines/reference/typesWithPrivateConstructor.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(4,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(8,5): error TS2322: Type 'Function' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in 'Function' + Type 'Function' provides no match for the signature '(): void' tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(11,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(12,5): error TS1089: 'private' modifier cannot appear on a constructor declaration. tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(15,10): error TS2346: Supplied parameters do not match any signature of call target. @@ -19,7 +19,7 @@ tests/cases/conformance/types/members/typesWithPrivateConstructor.ts(15,10): err var r: () => void = c.constructor; ~ !!! error TS2322: Type 'Function' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Function' +!!! error TS2322: Type 'Function' provides no match for the signature '(): void' class C2 { private constructor(x: number); diff --git a/tests/baselines/reference/typesWithPublicConstructor.errors.txt b/tests/baselines/reference/typesWithPublicConstructor.errors.txt index 6aa06afcdab..54bee79dae0 100644 --- a/tests/baselines/reference/typesWithPublicConstructor.errors.txt +++ b/tests/baselines/reference/typesWithPublicConstructor.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/types/members/typesWithPublicConstructor.ts(8,5): error TS2322: Type 'Function' is not assignable to type '() => void'. - Signature '(): void' has no corresponding signature in 'Function' + Type 'Function' provides no match for the signature '(): void' tests/cases/conformance/types/members/typesWithPublicConstructor.ts(15,10): error TS2346: Supplied parameters do not match any signature of call target. @@ -14,7 +14,7 @@ tests/cases/conformance/types/members/typesWithPublicConstructor.ts(15,10): erro var r: () => void = c.constructor; ~ !!! error TS2322: Type 'Function' is not assignable to type '() => void'. -!!! error TS2322: Signature '(): void' has no corresponding signature in 'Function' +!!! error TS2322: Type 'Function' provides no match for the signature '(): void' class C2 { public constructor(x: number); From e4e0667a87b19d06abe187cfec497ccb76af5835 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 25 Nov 2015 11:10:35 -0800 Subject: [PATCH 041/265] Improve variable naming Change `localErrors` to `reportMoreErrors` to more accurately reflect what the variable does. --- src/compiler/checker.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4be22e4499e..b6d00214d4e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5439,21 +5439,21 @@ namespace ts { outer: for (const t of targetSignatures) { if (!t.hasStringLiterals || target.flags & TypeFlags.FromSignature) { - let localErrors = reportErrors; + // Only report errors from the first failure + let reportMoreErrors = reportErrors; const checkedAbstractAssignability = false; for (const s of sourceSignatures) { if (!s.hasStringLiterals || source.flags & TypeFlags.FromSignature) { - const related = signatureRelatedTo(s, t, localErrors); + const related = signatureRelatedTo(s, t, reportMoreErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - // Only report errors from the first failure - localErrors = false; + reportMoreErrors = false; } } - if (localErrors) { + if (reportMoreErrors) { reportError(Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); From 57f1844e089df786206ff08600239250376bad54 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 25 Nov 2015 14:45:04 -0800 Subject: [PATCH 042/265] Change variable naming --- src/compiler/checker.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index b6d00214d4e..06b0b603d02 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5439,21 +5439,21 @@ namespace ts { outer: for (const t of targetSignatures) { if (!t.hasStringLiterals || target.flags & TypeFlags.FromSignature) { - // Only report errors from the first failure - let reportMoreErrors = reportErrors; + // Only elaborate errors from the first failure + let shouldElaborateErrors = reportErrors; const checkedAbstractAssignability = false; for (const s of sourceSignatures) { if (!s.hasStringLiterals || source.flags & TypeFlags.FromSignature) { - const related = signatureRelatedTo(s, t, reportMoreErrors); + const related = signatureRelatedTo(s, t, shouldElaborateErrors); if (related) { result &= related; errorInfo = saveErrorInfo; continue outer; } - reportMoreErrors = false; + shouldElaborateErrors = false; } } - if (reportMoreErrors) { + if (shouldElaborateErrors) { reportError(Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); From d167e55097dc0950d416ae818e3762bdbd3745ee Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 25 Nov 2015 18:38:25 -0800 Subject: [PATCH 043/265] accept baseline --- tests/baselines/reference/moduleDuplicateIdentifiers.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/baselines/reference/moduleDuplicateIdentifiers.js b/tests/baselines/reference/moduleDuplicateIdentifiers.js index e02914bd874..842d1587911 100644 --- a/tests/baselines/reference/moduleDuplicateIdentifiers.js +++ b/tests/baselines/reference/moduleDuplicateIdentifiers.js @@ -41,6 +41,7 @@ export enum Utensils { // Shouldn't error //// [moduleDuplicateIdentifiers.js] +"use strict"; exports.Foo = 2; exports.Foo = 42; // Should error var FooBar; From 54ab1e99c0320ff0a8784bff0ca14b0580e66741 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 26 Nov 2015 14:24:12 -0800 Subject: [PATCH 044/265] fix module record nonambiguous case, add test for it --- src/compiler/checker.ts | 2 +- ...oduleSameValueDuplicateExportedBindings.js | 28 +++++++++++++++++++ ...SameValueDuplicateExportedBindings.symbols | 11 ++++++++ ...leSameValueDuplicateExportedBindings.types | 12 ++++++++ ...oduleSameValueDuplicateExportedBindings.ts | 10 +++++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types create mode 100644 tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 28691b3a30e..1dce8d2406d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1113,7 +1113,7 @@ namespace ts { }; } } - else if (lookupTable && exportNode && id !== "default" && hasProperty(target, id)) { + else if (lookupTable && exportNode && id !== "default" && hasProperty(target, id) && target[id] !== source[id]) { lookupTable[id].exportsWithDuplicate.push(exportNode); } } diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js new file mode 100644 index 00000000000..8a12973dc02 --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js @@ -0,0 +1,28 @@ +//// [tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts] //// + +//// [a.ts] +export * from "./b"; +export * from "./c"; + +//// [b.ts] +export * from "./c"; + +//// [c.ts] +export var foo = 42; + +//// [c.js] +"use strict"; +exports.foo = 42; +//// [b.js] +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("./c")); +//// [a.js] +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("./b")); +__export(require("./c")); diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols new file mode 100644 index 00000000000..2f8bba9b6ab --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/a.ts === +export * from "./b"; +No type information for this code.export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/b.ts === +export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/c.ts === +export var foo = 42; +>foo : Symbol(foo, Decl(c.ts, 0, 10)) + diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types new file mode 100644 index 00000000000..57be71c802b --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/a.ts === +export * from "./b"; +No type information for this code.export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/b.ts === +export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/c.ts === +export var foo = 42; +>foo : number +>42 : number + diff --git a/tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts b/tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts new file mode 100644 index 00000000000..d51de9c2e5a --- /dev/null +++ b/tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts @@ -0,0 +1,10 @@ +// @module: commonjs +// @filename: a.ts +export * from "./b"; +export * from "./c"; + +// @filename: b.ts +export * from "./c"; + +// @filename: c.ts +export var foo = 42; \ No newline at end of file From d3f2f55ae8fef7a21ae012108e362e6d4fb71a38 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 30 Nov 2015 12:44:13 -0800 Subject: [PATCH 045/265] rename tests, add another test, reoslve symbols for comparison --- src/compiler/checker.ts | 2 +- ...uleSameValueDuplicateExportedBindings1.js} | 2 +- ...meValueDuplicateExportedBindings1.symbols} | 0 ...SameValueDuplicateExportedBindings1.types} | 0 ...duleSameValueDuplicateExportedBindings2.js | 34 +++++++++++++++++++ ...ameValueDuplicateExportedBindings2.symbols | 19 +++++++++++ ...eSameValueDuplicateExportedBindings2.types | 19 +++++++++++ ...uleSameValueDuplicateExportedBindings1.ts} | 0 ...duleSameValueDuplicateExportedBindings2.ts | 13 +++++++ 9 files changed, 87 insertions(+), 2 deletions(-) rename tests/baselines/reference/{moduleSameValueDuplicateExportedBindings.js => moduleSameValueDuplicateExportedBindings1.js} (93%) rename tests/baselines/reference/{moduleSameValueDuplicateExportedBindings.symbols => moduleSameValueDuplicateExportedBindings1.symbols} (100%) rename tests/baselines/reference/{moduleSameValueDuplicateExportedBindings.types => moduleSameValueDuplicateExportedBindings1.types} (100%) create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.js create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.symbols create mode 100644 tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.types rename tests/cases/compiler/{moduleSameValueDuplicateExportedBindings.ts => moduleSameValueDuplicateExportedBindings1.ts} (100%) create mode 100644 tests/cases/compiler/moduleSameValueDuplicateExportedBindings2.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1dce8d2406d..fb70bd747a6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1113,7 +1113,7 @@ namespace ts { }; } } - else if (lookupTable && exportNode && id !== "default" && hasProperty(target, id) && target[id] !== source[id]) { + else if (lookupTable && exportNode && id !== "default" && hasProperty(target, id) && resolveSymbol(target[id]) !== resolveSymbol(source[id])) { lookupTable[id].exportsWithDuplicate.push(exportNode); } } diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.js similarity index 93% rename from tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js rename to tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.js index 8a12973dc02..4061a32b49f 100644 --- a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.js +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.js @@ -1,4 +1,4 @@ -//// [tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts] //// +//// [tests/cases/compiler/moduleSameValueDuplicateExportedBindings1.ts] //// //// [a.ts] export * from "./b"; diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.symbols similarity index 100% rename from tests/baselines/reference/moduleSameValueDuplicateExportedBindings.symbols rename to tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.symbols diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.types similarity index 100% rename from tests/baselines/reference/moduleSameValueDuplicateExportedBindings.types rename to tests/baselines/reference/moduleSameValueDuplicateExportedBindings1.types diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.js b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.js new file mode 100644 index 00000000000..99a09af149a --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.js @@ -0,0 +1,34 @@ +//// [tests/cases/compiler/moduleSameValueDuplicateExportedBindings2.ts] //// + +//// [a.ts] +export * from "./b"; +export * from "./c"; + +//// [b.ts] +export {Animals} from "./c"; + +//// [c.ts] +export enum Animals { + Cat, + Dog +}; + +//// [c.js] +"use strict"; +(function (Animals) { + Animals[Animals["Cat"] = 0] = "Cat"; + Animals[Animals["Dog"] = 1] = "Dog"; +})(exports.Animals || (exports.Animals = {})); +var Animals = exports.Animals; +; +//// [b.js] +"use strict"; +var c_1 = require("./c"); +exports.Animals = c_1.Animals; +//// [a.js] +"use strict"; +function __export(m) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} +__export(require("./b")); +__export(require("./c")); diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.symbols b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.symbols new file mode 100644 index 00000000000..390fd1b0bed --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.symbols @@ -0,0 +1,19 @@ +=== tests/cases/compiler/a.ts === +export * from "./b"; +No type information for this code.export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/b.ts === +export {Animals} from "./c"; +>Animals : Symbol(Animals, Decl(b.ts, 0, 8)) + +=== tests/cases/compiler/c.ts === +export enum Animals { +>Animals : Symbol(Animals, Decl(c.ts, 0, 0)) + + Cat, +>Cat : Symbol(Animals.Cat, Decl(c.ts, 0, 21)) + + Dog +>Dog : Symbol(Animals.Dog, Decl(c.ts, 1, 5)) + +}; diff --git a/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.types b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.types new file mode 100644 index 00000000000..600b0d946c6 --- /dev/null +++ b/tests/baselines/reference/moduleSameValueDuplicateExportedBindings2.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/a.ts === +export * from "./b"; +No type information for this code.export * from "./c"; +No type information for this code. +No type information for this code.=== tests/cases/compiler/b.ts === +export {Animals} from "./c"; +>Animals : typeof Animals + +=== tests/cases/compiler/c.ts === +export enum Animals { +>Animals : Animals + + Cat, +>Cat : Animals + + Dog +>Dog : Animals + +}; diff --git a/tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts b/tests/cases/compiler/moduleSameValueDuplicateExportedBindings1.ts similarity index 100% rename from tests/cases/compiler/moduleSameValueDuplicateExportedBindings.ts rename to tests/cases/compiler/moduleSameValueDuplicateExportedBindings1.ts diff --git a/tests/cases/compiler/moduleSameValueDuplicateExportedBindings2.ts b/tests/cases/compiler/moduleSameValueDuplicateExportedBindings2.ts new file mode 100644 index 00000000000..1a30004301a --- /dev/null +++ b/tests/cases/compiler/moduleSameValueDuplicateExportedBindings2.ts @@ -0,0 +1,13 @@ +// @module: commonjs +// @filename: a.ts +export * from "./b"; +export * from "./c"; + +// @filename: b.ts +export {Animals} from "./c"; + +// @filename: c.ts +export enum Animals { + Cat, + Dog +}; \ No newline at end of file From 6b42712eb2edf7e330ae2510f64484268be9dc19 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 30 Nov 2015 13:26:00 -0800 Subject: [PATCH 046/265] Report bind diagnostics, program diagnostics and file pre processing diagnostics in javascript file Handles #5785 --- src/compiler/program.ts | 14 +++++----- .../jsFileCompilationBindErrors.errors.txt | 27 +++++++++++++++++++ .../jsFileCompilationBindErrors.symbols | 21 --------------- .../jsFileCompilationBindErrors.types | 26 ------------------ ...mpilationExportAssignmentSyntax.errors.txt | 5 +++- .../getJavaScriptSemanticDiagnostics2.ts | 7 +++++ 6 files changed, 44 insertions(+), 56 deletions(-) create mode 100644 tests/baselines/reference/jsFileCompilationBindErrors.errors.txt delete mode 100644 tests/baselines/reference/jsFileCompilationBindErrors.symbols delete mode 100644 tests/baselines/reference/jsFileCompilationBindErrors.types diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 6139dda0013..b73558cfc6b 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -661,19 +661,17 @@ namespace ts { } function getSemanticDiagnosticsForFile(sourceFile: SourceFile, cancellationToken: CancellationToken): Diagnostic[] { - // For JavaScript files, we don't want to report the normal typescript semantic errors. - // Instead, we just report errors for using TypeScript-only constructs from within a - // JavaScript file. - if (isSourceFileJavaScript(sourceFile)) { - return getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken); - } - return runWithCancellationToken(() => { const typeChecker = getDiagnosticsProducingTypeChecker(); Debug.assert(!!sourceFile.bindDiagnostics); const bindDiagnostics = sourceFile.bindDiagnostics; - const checkDiagnostics = typeChecker.getDiagnostics(sourceFile, cancellationToken); + // For JavaScript files, we don't want to report the normal typescript semantic errors. + // Instead, we just report errors for using TypeScript-only constructs from within a + // JavaScript file. + const checkDiagnostics = isSourceFileJavaScript(sourceFile) ? + getJavaScriptSemanticDiagnosticsForFile(sourceFile, cancellationToken) : + typeChecker.getDiagnostics(sourceFile, cancellationToken); const fileProcessingDiagnosticsInFile = fileProcessingDiagnostics.getDiagnostics(sourceFile.fileName); const programDiagnosticsInFile = programDiagnostics.getDiagnostics(sourceFile.fileName); diff --git a/tests/baselines/reference/jsFileCompilationBindErrors.errors.txt b/tests/baselines/reference/jsFileCompilationBindErrors.errors.txt new file mode 100644 index 00000000000..eeae7053333 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindErrors.errors.txt @@ -0,0 +1,27 @@ +tests/cases/compiler/a.js(1,5): error TS2451: Cannot redeclare block-scoped variable 'C'. +tests/cases/compiler/a.js(2,5): error TS2451: Cannot redeclare block-scoped variable 'C'. +tests/cases/compiler/a.js(6,5): error TS7027: Unreachable code detected. +tests/cases/compiler/a.js(11,9): error TS1100: Invalid use of 'arguments' in strict mode. + + +==== tests/cases/compiler/a.js (4 errors) ==== + let C = "sss"; + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'C'. + let C = 0; // Error: Cannot redeclare block-scoped variable 'C'. + ~ +!!! error TS2451: Cannot redeclare block-scoped variable 'C'. + + function f() { + return; + return; // Error: Unreachable code detected. + ~~~~~~ +!!! error TS7027: Unreachable code detected. + } + + function b() { + "use strict"; + var arguments = 0; // Error: Invalid use of 'arguments' in strict mode. + ~~~~~~~~~ +!!! error TS1100: Invalid use of 'arguments' in strict mode. + } \ No newline at end of file diff --git a/tests/baselines/reference/jsFileCompilationBindErrors.symbols b/tests/baselines/reference/jsFileCompilationBindErrors.symbols deleted file mode 100644 index 6ad06da1df6..00000000000 --- a/tests/baselines/reference/jsFileCompilationBindErrors.symbols +++ /dev/null @@ -1,21 +0,0 @@ -=== tests/cases/compiler/a.js === -let C = "sss"; ->C : Symbol(C, Decl(a.js, 0, 3)) - -let C = 0; // Error: Cannot redeclare block-scoped variable 'C'. ->C : Symbol(C, Decl(a.js, 1, 3)) - -function f() { ->f : Symbol(f, Decl(a.js, 1, 10)) - - return; - return; // Error: Unreachable code detected. -} - -function b() { ->b : Symbol(b, Decl(a.js, 6, 1)) - - "use strict"; - var arguments = 0; // Error: Invalid use of 'arguments' in strict mode. ->arguments : Symbol(arguments, Decl(a.js, 10, 7)) -} diff --git a/tests/baselines/reference/jsFileCompilationBindErrors.types b/tests/baselines/reference/jsFileCompilationBindErrors.types deleted file mode 100644 index 113bcd08bc9..00000000000 --- a/tests/baselines/reference/jsFileCompilationBindErrors.types +++ /dev/null @@ -1,26 +0,0 @@ -=== tests/cases/compiler/a.js === -let C = "sss"; ->C : string ->"sss" : string - -let C = 0; // Error: Cannot redeclare block-scoped variable 'C'. ->C : number ->0 : number - -function f() { ->f : () => void - - return; - return; // Error: Unreachable code detected. -} - -function b() { ->b : () => void - - "use strict"; ->"use strict" : string - - var arguments = 0; // Error: Invalid use of 'arguments' in strict mode. ->arguments : number ->0 : number -} diff --git a/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt b/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt index f537941c55c..3be5f99823a 100644 --- a/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt +++ b/tests/baselines/reference/jsFileCompilationExportAssignmentSyntax.errors.txt @@ -1,9 +1,12 @@ error TS5055: Cannot write file 'tests/cases/compiler/a.js' because it would overwrite input file. +tests/cases/compiler/a.js(1,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. tests/cases/compiler/a.js(1,1): error TS8003: 'export=' can only be used in a .ts file. !!! error TS5055: Cannot write file 'tests/cases/compiler/a.js' because it would overwrite input file. -==== tests/cases/compiler/a.js (1 errors) ==== +==== tests/cases/compiler/a.js (2 errors) ==== export = b; ~~~~~~~~~~~ +!!! error TS1148: Cannot compile modules unless the '--module' flag is provided. + ~~~~~~~~~~~ !!! error TS8003: 'export=' can only be used in a .ts file. \ No newline at end of file diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts index 9ab29b41798..58c02dae183 100644 --- a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts +++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts @@ -11,5 +11,12 @@ verify.getSemanticDiagnostics(`[ "length": 11, "category": "error", "code": 8003 + }, + { + "message": "Cannot compile modules unless the '--module' flag is provided.", + "start": 0, + "length": 11, + "category": "error", + "code": 1148 } ]`); \ No newline at end of file From 5772dade970d366f61c8b5bffb0f7d60b1edf8d1 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 30 Nov 2015 13:59:03 -0800 Subject: [PATCH 047/265] Add test case for reporting file preprocessing error in javascript file --- src/compiler/program.ts | 2 ++ ...CompilationExternalPackageError.errors.txt | 19 +++++++++++++++++++ .../jsFileCompilationExternalPackageError.ts | 16 ++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 tests/baselines/reference/jsFileCompilationExternalPackageError.errors.txt create mode 100644 tests/cases/compiler/jsFileCompilationExternalPackageError.ts diff --git a/src/compiler/program.ts b/src/compiler/program.ts index b73558cfc6b..ed9f010c56a 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1077,6 +1077,8 @@ namespace ts { const importedFile = findSourceFile(resolution.resolvedFileName, toPath(resolution.resolvedFileName, currentDirectory, getCanonicalFileName), /*isDefaultLib*/ false, file, skipTrivia(file.text, file.imports[i].pos), file.imports[i].end); if (importedFile && resolution.isExternalLibraryImport) { + // Since currently irrespective of allowJs, we only look for supportedTypeScript extension external module files, + // this check is ok. Otherwise this would be never true for javascript file if (!isExternalModule(importedFile)) { const start = getTokenPosOfNode(file.imports[i], file); fileProcessingDiagnostics.add(createFileDiagnostic(file, start, file.imports[i].end - start, Diagnostics.Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition, importedFile.fileName)); diff --git a/tests/baselines/reference/jsFileCompilationExternalPackageError.errors.txt b/tests/baselines/reference/jsFileCompilationExternalPackageError.errors.txt new file mode 100644 index 00000000000..58111c777f1 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationExternalPackageError.errors.txt @@ -0,0 +1,19 @@ +tests/cases/compiler/moduleA/a.js(2,17): error TS2656: Exported external package typings file 'tests/cases/compiler/node_modules/b.ts' is not a module. Please contact the package author to update the package definition. + + +==== tests/cases/compiler/moduleA/a.js (1 errors) ==== + + import {a} from "b"; + ~~~ +!!! error TS2656: Exported external package typings file 'b.ts' is not a module. Please contact the package author to update the package definition. + a++; + import {c} from "c"; + c++; + +==== tests/cases/compiler/node_modules/b.ts (0 errors) ==== + var a = 10; + +==== tests/cases/compiler/node_modules/c.js (0 errors) ==== + exports.a = 10; + c = 10; + \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationExternalPackageError.ts b/tests/cases/compiler/jsFileCompilationExternalPackageError.ts new file mode 100644 index 00000000000..cb9d32adb82 --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationExternalPackageError.ts @@ -0,0 +1,16 @@ +// @allowJs: true +// @noEmit: true +// @module: commonjs + +// @filename: moduleA/a.js +import {a} from "b"; +a++; +import {c} from "c"; +c++; + +// @filename: node_modules/b.ts +var a = 10; + +// @filename: node_modules/c.js +exports.a = 10; +c = 10; From 1fb8a249dfcd577cc2d519775019f18ac2c7171c Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Tue, 1 Dec 2015 10:26:14 +0100 Subject: [PATCH 048/265] Enable await in ES6 and ES2015 script mode Even though strictly generators are an ES6 feature the real world support is large enough to use the feature in well known environments like node.js or Electron app. Since the previous output was not working at all anyway it feels like a good compromise to at least emit working code while still having the warning in place. The user would also need to add "use strict" on top of her .ts file to make it work with node.js. --- src/compiler/emitter.ts | 54 +++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 88847999a4b..09ae33c4edc 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -4514,32 +4514,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi convertedLoopState = undefined; tempFlags = 0; - tempVariables = undefined; - tempParameters = undefined; - - // When targeting ES6, emit arrow function natively in ES6 - if (shouldEmitAsArrowFunction(node)) { - emitSignatureParametersForArrow(node); - write(" =>"); - } - else { - emitSignatureParameters(node); - } - - const isAsync = isAsyncFunctionLike(node); - if (isAsync && languageVersion === ScriptTarget.ES6) { - emitAsyncFunctionBodyForES6(node); - } - else { - emitFunctionBody(node); - } - - if (!isES6ExportedDeclaration(node)) { - emitExportMemberAssignment(node); - } - - Debug.assert(convertedLoopState === undefined); - convertedLoopState = saveConvertedLoopState; + tempVariables = undefined; + tempParameters = undefined; + + // When targeting ES6, emit arrow function natively in ES6 + if (shouldEmitAsArrowFunction(node)) { + emitSignatureParametersForArrow(node); + write(" =>"); + } + else { + emitSignatureParameters(node); + } + + // Even though generators are a ES6 only feature, the functionality is wiedely supported + // in current browsers and latest node, therefore showing some tolerance + const isAsync = isAsyncFunctionLike(node); + if (isAsync && (languageVersion === ScriptTarget.ES6 || languageVersion === ScriptTarget.ES2015 || languageVersion === ScriptTarget.ES5)) { + emitAsyncFunctionBodyForES6(node); + } + else { + emitFunctionBody(node); + } + + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); + } + + Debug.assert(convertedLoopState === undefined); + convertedLoopState = saveConvertedLoopState; tempFlags = saveTempFlags; tempVariables = saveTempVariables; From c7a65b558ec853cf065e1127c6bf24d84ae0f051 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 1 Dec 2015 10:00:00 -0800 Subject: [PATCH 049/265] do not error on 'super' property access in ES6 --- src/compiler/checker.ts | 2 +- .../superPropertyAccess_ES5.errors.txt | 38 ++++++++ .../reference/superPropertyAccess_ES5.js | 84 +++++++++++++++++ .../reference/superPropertyAccess_ES6.js | 54 +++++++++++ .../reference/superPropertyAccess_ES6.symbols | 80 +++++++++++++++++ .../reference/superPropertyAccess_ES6.types | 89 +++++++++++++++++++ .../cases/compiler/superPropertyAccess_ES5.ts | 30 +++++++ .../cases/compiler/superPropertyAccess_ES6.ts | 30 +++++++ 8 files changed, 406 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/superPropertyAccess_ES5.errors.txt create mode 100644 tests/baselines/reference/superPropertyAccess_ES5.js create mode 100644 tests/baselines/reference/superPropertyAccess_ES6.js create mode 100644 tests/baselines/reference/superPropertyAccess_ES6.symbols create mode 100644 tests/baselines/reference/superPropertyAccess_ES6.types create mode 100644 tests/cases/compiler/superPropertyAccess_ES5.ts create mode 100644 tests/cases/compiler/superPropertyAccess_ES6.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 9ed3ca55e19..a76e7233c9b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8219,7 +8219,7 @@ namespace ts { // - In a static member function or static member accessor // where this references the constructor function object of a derived class, // a super property access is permitted and must specify a public static member function of the base class. - if (getDeclarationKindFromSymbol(prop) !== SyntaxKind.MethodDeclaration) { + if (languageVersion < ScriptTarget.ES6 && getDeclarationKindFromSymbol(prop) !== SyntaxKind.MethodDeclaration) { // `prop` refers to a *property* declared in the super class // rather than a *method*, so it does not satisfy the above criteria. diff --git a/tests/baselines/reference/superPropertyAccess_ES5.errors.txt b/tests/baselines/reference/superPropertyAccess_ES5.errors.txt new file mode 100644 index 00000000000..08adcd36e68 --- /dev/null +++ b/tests/baselines/reference/superPropertyAccess_ES5.errors.txt @@ -0,0 +1,38 @@ +tests/cases/compiler/superPropertyAccess_ES5.ts(12,22): error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. +tests/cases/compiler/superPropertyAccess_ES5.ts(27,15): error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. + + +==== tests/cases/compiler/superPropertyAccess_ES5.ts (2 errors) ==== + + class MyBase { + getValue(): number { return 1; } + get value(): number { return 1; } + } + + class MyDerived extends MyBase { + constructor() { + super(); + + const f1 = super.getValue(); + const f2 = super.value; + ~~~~~ +!!! error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. + } + } + + var d = new MyDerived(); + var f3 = d.value; + + class A { + private _property: string; + get property() { return this._property; } + set property(value: string) { this._property = value } + } + + class B extends A { + set property(value: string) { + super.property = value + " addition"; + ~~~~~~~~ +!!! error TS2340: Only public and protected methods of the base class are accessible via the 'super' keyword. + } + } \ No newline at end of file diff --git a/tests/baselines/reference/superPropertyAccess_ES5.js b/tests/baselines/reference/superPropertyAccess_ES5.js new file mode 100644 index 00000000000..a31c1dfdcba --- /dev/null +++ b/tests/baselines/reference/superPropertyAccess_ES5.js @@ -0,0 +1,84 @@ +//// [superPropertyAccess_ES5.ts] + +class MyBase { + getValue(): number { return 1; } + get value(): number { return 1; } +} + +class MyDerived extends MyBase { + constructor() { + super(); + + const f1 = super.getValue(); + const f2 = super.value; + } +} + +var d = new MyDerived(); +var f3 = d.value; + +class A { + private _property: string; + get property() { return this._property; } + set property(value: string) { this._property = value } +} + +class B extends A { + set property(value: string) { + super.property = value + " addition"; + } +} + +//// [superPropertyAccess_ES5.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var MyBase = (function () { + function MyBase() { + } + MyBase.prototype.getValue = function () { return 1; }; + Object.defineProperty(MyBase.prototype, "value", { + get: function () { return 1; }, + enumerable: true, + configurable: true + }); + return MyBase; +})(); +var MyDerived = (function (_super) { + __extends(MyDerived, _super); + function MyDerived() { + _super.call(this); + var f1 = _super.prototype.getValue.call(this); + var f2 = _super.prototype.value; + } + return MyDerived; +})(MyBase); +var d = new MyDerived(); +var f3 = d.value; +var A = (function () { + function A() { + } + Object.defineProperty(A.prototype, "property", { + get: function () { return this._property; }, + set: function (value) { this._property = value; }, + enumerable: true, + configurable: true + }); + return A; +})(); +var B = (function (_super) { + __extends(B, _super); + function B() { + _super.apply(this, arguments); + } + Object.defineProperty(B.prototype, "property", { + set: function (value) { + _super.prototype.property = value + " addition"; + }, + enumerable: true, + configurable: true + }); + return B; +})(A); diff --git a/tests/baselines/reference/superPropertyAccess_ES6.js b/tests/baselines/reference/superPropertyAccess_ES6.js new file mode 100644 index 00000000000..1b23c6ca0d8 --- /dev/null +++ b/tests/baselines/reference/superPropertyAccess_ES6.js @@ -0,0 +1,54 @@ +//// [superPropertyAccess_ES6.ts] + +class MyBase { + getValue(): number { return 1; } + get value(): number { return 1; } +} + +class MyDerived extends MyBase { + constructor() { + super(); + + const f1 = super.getValue(); + const f2 = super.value; + } +} + +var d = new MyDerived(); +var f3 = d.value; + +class A { + private _property: string; + get property() { return this._property; } + set property(value: string) { this._property = value } +} + +class B extends A { + set property(value: string) { + super.property = value + " addition"; + } +} + +//// [superPropertyAccess_ES6.js] +class MyBase { + getValue() { return 1; } + get value() { return 1; } +} +class MyDerived extends MyBase { + constructor() { + super(); + const f1 = super.getValue(); + const f2 = super.value; + } +} +var d = new MyDerived(); +var f3 = d.value; +class A { + get property() { return this._property; } + set property(value) { this._property = value; } +} +class B extends A { + set property(value) { + super.property = value + " addition"; + } +} diff --git a/tests/baselines/reference/superPropertyAccess_ES6.symbols b/tests/baselines/reference/superPropertyAccess_ES6.symbols new file mode 100644 index 00000000000..ada6c5b8057 --- /dev/null +++ b/tests/baselines/reference/superPropertyAccess_ES6.symbols @@ -0,0 +1,80 @@ +=== tests/cases/compiler/superPropertyAccess_ES6.ts === + +class MyBase { +>MyBase : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) + + getValue(): number { return 1; } +>getValue : Symbol(getValue, Decl(superPropertyAccess_ES6.ts, 1, 14)) + + get value(): number { return 1; } +>value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 2, 34)) +} + +class MyDerived extends MyBase { +>MyDerived : Symbol(MyDerived, Decl(superPropertyAccess_ES6.ts, 4, 1)) +>MyBase : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) + + constructor() { + super(); +>super : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) + + const f1 = super.getValue(); +>f1 : Symbol(f1, Decl(superPropertyAccess_ES6.ts, 10, 9)) +>super.getValue : Symbol(MyBase.getValue, Decl(superPropertyAccess_ES6.ts, 1, 14)) +>super : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) +>getValue : Symbol(MyBase.getValue, Decl(superPropertyAccess_ES6.ts, 1, 14)) + + const f2 = super.value; +>f2 : Symbol(f2, Decl(superPropertyAccess_ES6.ts, 11, 9)) +>super.value : Symbol(MyBase.value, Decl(superPropertyAccess_ES6.ts, 2, 34)) +>super : Symbol(MyBase, Decl(superPropertyAccess_ES6.ts, 0, 0)) +>value : Symbol(MyBase.value, Decl(superPropertyAccess_ES6.ts, 2, 34)) + } +} + +var d = new MyDerived(); +>d : Symbol(d, Decl(superPropertyAccess_ES6.ts, 15, 3)) +>MyDerived : Symbol(MyDerived, Decl(superPropertyAccess_ES6.ts, 4, 1)) + +var f3 = d.value; +>f3 : Symbol(f3, Decl(superPropertyAccess_ES6.ts, 16, 3)) +>d.value : Symbol(MyBase.value, Decl(superPropertyAccess_ES6.ts, 2, 34)) +>d : Symbol(d, Decl(superPropertyAccess_ES6.ts, 15, 3)) +>value : Symbol(MyBase.value, Decl(superPropertyAccess_ES6.ts, 2, 34)) + +class A { +>A : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) + + private _property: string; +>_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) + + get property() { return this._property; } +>property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>this._property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>this : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) +>_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) + + set property(value: string) { this._property = value } +>property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 21, 17)) +>this._property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>this : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) +>_property : Symbol(_property, Decl(superPropertyAccess_ES6.ts, 18, 9)) +>value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 21, 17)) +} + +class B extends A { +>B : Symbol(B, Decl(superPropertyAccess_ES6.ts, 22, 1)) +>A : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) + + set property(value: string) { +>property : Symbol(property, Decl(superPropertyAccess_ES6.ts, 24, 19)) +>value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 25, 17)) + + super.property = value + " addition"; +>super.property : Symbol(A.property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>super : Symbol(A, Decl(superPropertyAccess_ES6.ts, 16, 17)) +>property : Symbol(A.property, Decl(superPropertyAccess_ES6.ts, 19, 30), Decl(superPropertyAccess_ES6.ts, 20, 45)) +>value : Symbol(value, Decl(superPropertyAccess_ES6.ts, 25, 17)) + } +} diff --git a/tests/baselines/reference/superPropertyAccess_ES6.types b/tests/baselines/reference/superPropertyAccess_ES6.types new file mode 100644 index 00000000000..b10b1944a44 --- /dev/null +++ b/tests/baselines/reference/superPropertyAccess_ES6.types @@ -0,0 +1,89 @@ +=== tests/cases/compiler/superPropertyAccess_ES6.ts === + +class MyBase { +>MyBase : MyBase + + getValue(): number { return 1; } +>getValue : () => number +>1 : number + + get value(): number { return 1; } +>value : number +>1 : number +} + +class MyDerived extends MyBase { +>MyDerived : MyDerived +>MyBase : MyBase + + constructor() { + super(); +>super() : void +>super : typeof MyBase + + const f1 = super.getValue(); +>f1 : number +>super.getValue() : number +>super.getValue : () => number +>super : MyBase +>getValue : () => number + + const f2 = super.value; +>f2 : number +>super.value : number +>super : MyBase +>value : number + } +} + +var d = new MyDerived(); +>d : MyDerived +>new MyDerived() : MyDerived +>MyDerived : typeof MyDerived + +var f3 = d.value; +>f3 : number +>d.value : number +>d : MyDerived +>value : number + +class A { +>A : A + + private _property: string; +>_property : string + + get property() { return this._property; } +>property : string +>this._property : string +>this : this +>_property : string + + set property(value: string) { this._property = value } +>property : string +>value : string +>this._property = value : string +>this._property : string +>this : this +>_property : string +>value : string +} + +class B extends A { +>B : B +>A : A + + set property(value: string) { +>property : string +>value : string + + super.property = value + " addition"; +>super.property = value + " addition" : string +>super.property : string +>super : A +>property : string +>value + " addition" : string +>value : string +>" addition" : string + } +} diff --git a/tests/cases/compiler/superPropertyAccess_ES5.ts b/tests/cases/compiler/superPropertyAccess_ES5.ts new file mode 100644 index 00000000000..37897b9e549 --- /dev/null +++ b/tests/cases/compiler/superPropertyAccess_ES5.ts @@ -0,0 +1,30 @@ +// @target: ES5 + +class MyBase { + getValue(): number { return 1; } + get value(): number { return 1; } +} + +class MyDerived extends MyBase { + constructor() { + super(); + + const f1 = super.getValue(); + const f2 = super.value; + } +} + +var d = new MyDerived(); +var f3 = d.value; + +class A { + private _property: string; + get property() { return this._property; } + set property(value: string) { this._property = value } +} + +class B extends A { + set property(value: string) { + super.property = value + " addition"; + } +} \ No newline at end of file diff --git a/tests/cases/compiler/superPropertyAccess_ES6.ts b/tests/cases/compiler/superPropertyAccess_ES6.ts new file mode 100644 index 00000000000..ed082b19032 --- /dev/null +++ b/tests/cases/compiler/superPropertyAccess_ES6.ts @@ -0,0 +1,30 @@ +// @target: ES6 + +class MyBase { + getValue(): number { return 1; } + get value(): number { return 1; } +} + +class MyDerived extends MyBase { + constructor() { + super(); + + const f1 = super.getValue(); + const f2 = super.value; + } +} + +var d = new MyDerived(); +var f3 = d.value; + +class A { + private _property: string; + get property() { return this._property; } + set property(value: string) { this._property = value } +} + +class B extends A { + set property(value: string) { + super.property = value + " addition"; + } +} \ No newline at end of file From c12d29bda5fba0efef6473c95bae2c2abd1be996 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Tue, 1 Dec 2015 20:26:20 +0100 Subject: [PATCH 050/265] Simplifying the pre ES6 async/await change --- src/compiler/emitter.ts | 58 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 09ae33c4edc..557c02bf4f7 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2978,7 +2978,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else { // this is top level converted loop so we need to create an alias for 'this' here - // NOTE: + // NOTE: // if converted loops were all nested in arrow function then we'll always emit '_this' so convertedLoopState.thisName will not be set. // If it is set this means that all nested loops are not nested in arrow function and it is safe to capture 'this'. write(`var ${convertedLoopState.thisName} = this;`); @@ -4369,7 +4369,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitAsyncFunctionBodyForES6(node: FunctionLikeDeclaration) { const promiseConstructor = getEntityNameFromTypeNode(node.type); - const isArrowFunction = node.kind === SyntaxKind.ArrowFunction; + const isArrowFunction = node.kind === SyntaxKind.ArrowFunction; const hasLexicalArguments = (resolver.getNodeCheckFlags(node) & NodeCheckFlags.CaptureArguments) !== 0; // An async function is emit as an outer function that calls an inner @@ -4514,34 +4514,32 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi convertedLoopState = undefined; tempFlags = 0; - tempVariables = undefined; - tempParameters = undefined; - - // When targeting ES6, emit arrow function natively in ES6 - if (shouldEmitAsArrowFunction(node)) { - emitSignatureParametersForArrow(node); - write(" =>"); - } - else { - emitSignatureParameters(node); - } - - // Even though generators are a ES6 only feature, the functionality is wiedely supported - // in current browsers and latest node, therefore showing some tolerance - const isAsync = isAsyncFunctionLike(node); - if (isAsync && (languageVersion === ScriptTarget.ES6 || languageVersion === ScriptTarget.ES2015 || languageVersion === ScriptTarget.ES5)) { - emitAsyncFunctionBodyForES6(node); - } - else { - emitFunctionBody(node); - } - - if (!isES6ExportedDeclaration(node)) { - emitExportMemberAssignment(node); - } - - Debug.assert(convertedLoopState === undefined); - convertedLoopState = saveConvertedLoopState; + tempVariables = undefined; + tempParameters = undefined; + + // When targeting ES6, emit arrow function natively in ES6 + if (shouldEmitAsArrowFunction(node)) { + emitSignatureParametersForArrow(node); + write(" =>"); + } + else { + emitSignatureParameters(node); + } + + const isAsync = isAsyncFunctionLike(node); + if (isAsync) { + emitAsyncFunctionBodyForES6(node); + } + else { + emitFunctionBody(node); + } + + if (!isES6ExportedDeclaration(node)) { + emitExportMemberAssignment(node); + } + + Debug.assert(convertedLoopState === undefined); + convertedLoopState = saveConvertedLoopState; tempFlags = saveTempFlags; tempVariables = saveTempVariables; From acd1760c8c7fcde17189c517718c13645565ec55 Mon Sep 17 00:00:00 2001 From: Dirk Holtwick Date: Tue, 1 Dec 2015 20:30:50 +0100 Subject: [PATCH 051/265] Fix whitespace issues --- src/compiler/emitter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 557c02bf4f7..641c50a8182 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2978,7 +2978,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi } else { // this is top level converted loop so we need to create an alias for 'this' here - // NOTE: + // NOTE: // if converted loops were all nested in arrow function then we'll always emit '_this' so convertedLoopState.thisName will not be set. // If it is set this means that all nested loops are not nested in arrow function and it is safe to capture 'this'. write(`var ${convertedLoopState.thisName} = this;`); @@ -4369,7 +4369,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi function emitAsyncFunctionBodyForES6(node: FunctionLikeDeclaration) { const promiseConstructor = getEntityNameFromTypeNode(node.type); - const isArrowFunction = node.kind === SyntaxKind.ArrowFunction; + const isArrowFunction = node.kind === SyntaxKind.ArrowFunction; const hasLexicalArguments = (resolver.getNodeCheckFlags(node) & NodeCheckFlags.CaptureArguments) !== 0; // An async function is emit as an outer function that calls an inner From 130f3304ea0efe27e63ff4824224a263ddabf7f3 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 14:35:26 -0800 Subject: [PATCH 052/265] Style nits for the style nit god --- src/compiler/checker.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index fb70bd747a6..4d936320ba6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1128,7 +1128,7 @@ namespace ts { function visit(symbol: Symbol): SymbolTable { if (symbol && symbol.flags & SymbolFlags.HasExports && !contains(visitedSymbols, symbol)) { visitedSymbols.push(symbol); - const symbols: SymbolTable = cloneSymbolTable(symbol.exports); + const symbols = cloneSymbolTable(symbol.exports); // All export * declarations are collected in an __export symbol by the binder const exportStars = symbol.exports["__export"]; if (exportStars) { @@ -1146,8 +1146,8 @@ namespace ts { } for (const id in lookupTable) { const { exportsWithDuplicate } = lookupTable[id]; - // Its not an error if the file with multiple export *'s with duplicate names exports a member with that name itself - if (id === "export=" || !exportsWithDuplicate.length || id in symbols) { + // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + if (id === "export=" || !exportsWithDuplicate.length || hasProperty(symbols, id)) { continue; } for (const node of exportsWithDuplicate) { @@ -14138,7 +14138,7 @@ namespace ts { if (id === "__export") { continue; } - const {declarations, flags} = exports[id]; + const { declarations, flags } = exports[id]; // ECMA262: 15.2.1.1 It is a Syntax Error if the ExportedNames of ModuleItemList contains any duplicate entries. (TS Exceptions: namespaces, function overloads, enums, and interfaces) if (!(flags & (SymbolFlags.Namespace | SymbolFlags.Interface | SymbolFlags.Enum)) && declarations.length > 1) { const exportedDeclarations: Declaration[] = filter(declarations, isNotOverload); From 02d96f67bbb6093a5f422d7886c8ddd9b12346ae Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 14:57:59 -0800 Subject: [PATCH 053/265] trio of missed style nits --- src/compiler/checker.ts | 2 +- src/compiler/emitter.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 4d936320ba6..6a99cf9a67c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1146,7 +1146,7 @@ namespace ts { } for (const id in lookupTable) { const { exportsWithDuplicate } = lookupTable[id]; - // It's not an error if the file with multiple export *'s with duplicate names exports a member with that name itself + // It's not an error if the file with multiple `export *`s with duplicate names exports a member with that name itself if (id === "export=" || !exportsWithDuplicate.length || hasProperty(symbols, id)) { continue; } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 947b88567d9..19f1e51565b 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -6211,7 +6211,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // do not emit var if variable was already hoisted const isES6ExportedEnum = isES6ExportedDeclaration(node); - if ((!(node.flags & NodeFlags.Export)) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.EnumDeclaration))) { + if (!(node.flags & NodeFlags.Export) || (isES6ExportedEnum && isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.EnumDeclaration))) { emitStart(node); if (isES6ExportedEnum) { write("export "); @@ -6328,7 +6328,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (emitVarForModule) { const isES6ExportedNamespace = isES6ExportedDeclaration(node); - if ((!isES6ExportedNamespace) || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.ModuleDeclaration)) { + if (!isES6ExportedNamespace || isFirstDeclarationOfKind(node, node.symbol && node.symbol.declarations, SyntaxKind.ModuleDeclaration)) { emitStart(node); if (isES6ExportedNamespace) { write("export "); From c4b0b62bfc694928ed79858d8e9bcb8f2790bb05 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Tue, 1 Dec 2015 15:06:53 -0800 Subject: [PATCH 054/265] Merge fixup --- src/compiler/binder.ts | 10 +++++----- src/compiler/checker.ts | 21 ++++++++++++++------- src/compiler/utilities.ts | 2 +- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 7f0fd2fb3fa..86fcc809d58 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1178,8 +1178,8 @@ namespace ts { case SyntaxKind.Identifier: return checkStrictModeIdentifier(node); case SyntaxKind.BinaryExpression: - if (isJavaScriptFile) { - let specialKind = getSpecialPropertyAssignmentKind(node); + if (isInJavaScriptFile(node)) { + const specialKind = getSpecialPropertyAssignmentKind(node); switch (specialKind) { case SpecialPropertyAssignmentKind.ExportsProperty: bindExportsPropertyAssignment(node); @@ -1378,11 +1378,11 @@ namespace ts { // This does two things: turns 'x' into a constructor function, and // adds a member 'y' to the result of that constructor function // Get 'x', the class - let classId = ((node.left).expression).expression; + const classId = ((node.left).expression).expression; // Look up the function in the local scope, since prototype assignments should immediately // follow the function declaration - let funcSymbol = container.locals[classId.text]; + const funcSymbol = container.locals[classId.text]; if (!funcSymbol) { return; } @@ -1397,7 +1397,7 @@ namespace ts { } // Get the exports of the class so we can add the method to it - let funcExports = declareSymbol(funcSymbol.exports, funcSymbol, (node.left).expression, SymbolFlags.ObjectLiteral | SymbolFlags.Property, SymbolFlags.None); + const funcExports = declareSymbol(funcSymbol.exports, funcSymbol, (node.left).expression, SymbolFlags.ObjectLiteral | SymbolFlags.Property, SymbolFlags.None); // Declare the method declareSymbol(funcExports.members, funcExports, node.left, SymbolFlags.Method, SymbolFlags.None); diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 29e31a84a23..94c13fd1f3f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -123,8 +123,8 @@ namespace ts { const noConstraintType = createAnonymousType(undefined, emptySymbols, emptyArray, emptyArray, undefined, undefined); - const anySignature = createSignature(undefined, undefined, emptyArray, undefined, anyType, undefined, 0, false, false); - const unknownSignature = createSignature(undefined, undefined, emptyArray, undefined, unknownType, undefined, 0, false, false); + const anySignature = createSignature(undefined, undefined, emptyArray, undefined, anyType, undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); + const unknownSignature = createSignature(undefined, undefined, emptyArray, undefined, unknownType, undefined, 0, /*hasRestParameter*/ false, /*hasStringLiterals*/ false); const globals: SymbolTable = {}; @@ -2661,7 +2661,7 @@ namespace ts { } else { // Declaration for className.prototype in inferred JS class - let type = createAnonymousType(symbol, symbol.members, emptyArray, emptyArray, undefined, undefined); + const type = createAnonymousType(symbol, symbol.members, emptyArray, emptyArray, undefined, undefined); return links.type = type; } } @@ -3930,9 +3930,9 @@ namespace ts { default: if (declaration.symbol.inferredConstructor) { kind = SignatureKind.Construct; - let members = createSymbolTable(emptyArray); + const members = createSymbolTable(emptyArray); // Collect methods declared with className.protoype.methodName = ... - let proto = declaration.symbol.exports["prototype"]; + const proto = declaration.symbol.exports["prototype"]; if (proto) { mergeSymbolTable(members, proto.members); } @@ -3954,7 +3954,7 @@ namespace ts { function getSignaturesOfSymbol(symbol: Symbol): Signature[] { if (!symbol) return emptyArray; - const result: Signature[] = []; + let result: Signature[] = []; for (let i = 0, len = symbol.declarations.length; i < len; i++) { const node = symbol.declarations[i]; switch (node.kind) { @@ -6841,7 +6841,14 @@ namespace ts { let container: Node; if (symbol.flags & SymbolFlags.Class) { // get parent of class declaration - container = getClassLikeDeclarationOfSymbol(symbol).parent; + const classDeclaration = getClassLikeDeclarationOfSymbol(symbol); + if (classDeclaration) { + container = classDeclaration.parent; + } + else { + // JS-inferred class; do nothing + return; + } } else { // nesting structure: diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 553c5bbeff0..cffc1e90a06 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1090,7 +1090,7 @@ namespace ts { } else if (lhs.expression.kind === SyntaxKind.PropertyAccessExpression) { // chained dot, e.g. x.y.z = expr; this var is the 'x.y' part - let innerPropertyAccess = lhs.expression; + const innerPropertyAccess = lhs.expression; if (innerPropertyAccess.expression.kind === SyntaxKind.Identifier && innerPropertyAccess.name.text === "prototype") { return SpecialPropertyAssignmentKind.PrototypeProperty; } From 973ba4b50ea7de646bf8cd9e9da92c2d65f9ffa6 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 1 Dec 2015 15:51:43 -0800 Subject: [PATCH 055/265] Allow type parameters in constraints --- src/compiler/checker.ts | 208 +++++++++++---------------- src/compiler/diagnosticMessages.json | 2 +- src/compiler/types.ts | 2 +- 3 files changed, 83 insertions(+), 129 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d4cdd50180d..dfd108cf713 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4068,6 +4068,23 @@ namespace ts { : undefined; } + function getConstraintDeclaration(type: TypeParameter) { + return (getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint; + } + + function hasConstraintReferenceTo(type: Type, target: TypeParameter): boolean { + let checked: Type[]; + while (type && type.flags & TypeFlags.TypeParameter && !contains(checked, type)) { + if (type === target) { + return true; + } + (checked || (checked = [])).push(type); + let constraintDeclaration = getConstraintDeclaration(type); + type = constraintDeclaration && getTypeFromTypeNode(constraintDeclaration); + } + return false; + } + function getConstraintOfTypeParameter(type: TypeParameter): Type { if (!type.constraint) { if (type.target) { @@ -4075,7 +4092,13 @@ namespace ts { type.constraint = targetConstraint ? instantiateType(targetConstraint, type.mapper) : noConstraintType; } else { - type.constraint = getTypeFromTypeNode((getDeclarationOfKind(type.symbol, SyntaxKind.TypeParameter)).constraint); + let constraintDeclaration = getConstraintDeclaration(type); + let constraint = getTypeFromTypeNode(constraintDeclaration); + if (hasConstraintReferenceTo(constraint, type)) { + error(constraintDeclaration, Diagnostics.Type_parameter_0_has_a_circular_constraint, typeToString(type)); + constraint = unknownType; + } + type.constraint = constraint; } } return type.constraint === noConstraintType ? undefined : type.constraint; @@ -4130,55 +4153,6 @@ namespace ts { return type; } - function isTypeParameterReferenceIllegalInConstraint(typeReferenceNode: TypeReferenceNode | ExpressionWithTypeArguments, typeParameterSymbol: Symbol): boolean { - const links = getNodeLinks(typeReferenceNode); - if (links.isIllegalTypeReferenceInConstraint !== undefined) { - return links.isIllegalTypeReferenceInConstraint; - } - - // bubble up to the declaration - let currentNode: Node = typeReferenceNode; - // forEach === exists - while (!forEach(typeParameterSymbol.declarations, d => d.parent === currentNode.parent)) { - currentNode = currentNode.parent; - } - // if last step was made from the type parameter this means that path has started somewhere in constraint which is illegal - links.isIllegalTypeReferenceInConstraint = currentNode.kind === SyntaxKind.TypeParameter; - return links.isIllegalTypeReferenceInConstraint; - } - - function checkTypeParameterHasIllegalReferencesInConstraint(typeParameter: TypeParameterDeclaration): void { - let typeParameterSymbol: Symbol; - function check(n: Node): void { - if (n.kind === SyntaxKind.TypeReference && (n).typeName.kind === SyntaxKind.Identifier) { - const links = getNodeLinks(n); - if (links.isIllegalTypeReferenceInConstraint === undefined) { - const symbol = resolveName(typeParameter, ((n).typeName).text, SymbolFlags.Type, /*nameNotFoundMessage*/ undefined, /*nameArg*/ undefined); - if (symbol && (symbol.flags & SymbolFlags.TypeParameter)) { - // TypeScript 1.0 spec (April 2014): 3.4.1 - // Type parameters declared in a particular type parameter list - // may not be referenced in constraints in that type parameter list - - // symbol.declaration.parent === typeParameter.parent - // -> typeParameter and symbol.declaration originate from the same type parameter list - // -> illegal for all declarations in symbol - // forEach === exists - links.isIllegalTypeReferenceInConstraint = forEach(symbol.declarations, d => d.parent === typeParameter.parent); - } - } - if (links.isIllegalTypeReferenceInConstraint) { - error(typeParameter, Diagnostics.Constraint_of_a_type_parameter_cannot_reference_any_type_parameter_from_the_same_type_parameter_list); - } - } - forEachChild(n, check); - } - - if (typeParameter.constraint) { - typeParameterSymbol = getSymbolOfNode(typeParameter); - check(typeParameter.constraint); - } - } - // Get type from reference to class or interface function getTypeFromClassOrInterfaceReference(node: TypeReferenceNode | ExpressionWithTypeArguments, symbol: Symbol): Type { const type = getDeclaredTypeOfSymbol(symbol); @@ -4225,13 +4199,6 @@ namespace ts { // Get type from reference to named type that cannot be generic (enum or type parameter) function getTypeFromNonGenericTypeReference(node: TypeReferenceNode | ExpressionWithTypeArguments, symbol: Symbol): Type { - if (symbol.flags & SymbolFlags.TypeParameter && isTypeParameterReferenceIllegalInConstraint(node, symbol)) { - // TypeScript 1.0 spec (April 2014): 3.4.1 - // Type parameters declared in a particular type parameter list - // may not be referenced in constraints in that type parameter list - // Implementation: such type references are resolved to 'unknown' type that usually denotes error - return unknownType; - } if (node.typeArguments) { error(node, Diagnostics.Type_0_is_not_generic, symbolToString(symbol)); return unknownType; @@ -4678,19 +4645,21 @@ namespace ts { }; } - function createInferenceMapper(context: InferenceContext): TypeMapper { - const mapper: TypeMapper = t => { - for (let i = 0; i < context.typeParameters.length; i++) { - if (t === context.typeParameters[i]) { - context.inferences[i].isFixed = true; - return getInferredType(context, i); + function getInferenceMapper(context: InferenceContext): TypeMapper { + if (!context.mapper) { + const mapper: TypeMapper = t => { + for (let i = 0; i < context.typeParameters.length; i++) { + if (t === context.typeParameters[i]) { + context.inferences[i].isFixed = true; + return getInferredType(context, i); + } } - } - return t; - }; - - mapper.context = context; - return mapper; + return t; + }; + mapper.context = context; + context.mapper = mapper; + } + return context.mapper; } function identityMapper(type: Type): Type { @@ -5071,9 +5040,6 @@ namespace ts { } return objectTypeRelatedTo(source, source, target, /*reportErrors*/ false); } - if (source.flags & TypeFlags.TypeParameter && target.flags & TypeFlags.TypeParameter) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & TypeFlags.Union && target.flags & TypeFlags.Union || source.flags & TypeFlags.Intersection && target.flags & TypeFlags.Intersection) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -5204,27 +5170,16 @@ namespace ts { return result; } - function typeParameterIdenticalTo(source: TypeParameter, target: TypeParameter): Ternary { - // covers case when both type parameters does not have constraint (both equal to noConstraintType) - if (source.constraint === target.constraint) { - return Ternary.True; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return Ternary.False; - } - return isIdenticalTo(source.constraint, target.constraint); - } - // Determine if two object types are related by structure. First, check if the result is already available in the global cache. // Second, check if we have already started a comparison of the given two types in which case we assume the result to be true. // Third, check if both types are part of deeply nested chains of generic type instantiations and if so assume the types are // equal and infinitely expanding. Fourth, if we have reached a depth of 100 nested comparisons, assume we have runaway recursion // and issue an error. Otherwise, actually compare the structure of the two types. - function objectTypeRelatedTo(apparentSource: Type, originalSource: Type, target: Type, reportErrors: boolean): Ternary { + function objectTypeRelatedTo(source: Type, originalSource: Type, target: Type, reportErrors: boolean): Ternary { if (overflow) { return Ternary.False; } - const id = relation !== identityRelation || apparentSource.id < target.id ? apparentSource.id + "," + target.id : target.id + "," + apparentSource.id; + const id = relation !== identityRelation || source.id < target.id ? source.id + "," + target.id : target.id + "," + source.id; const related = relation[id]; if (related !== undefined) { if (elaborateErrors && related === RelationComparisonResult.Failed) { @@ -5254,28 +5209,28 @@ namespace ts { maybeStack = []; expandingFlags = 0; } - sourceStack[depth] = apparentSource; + sourceStack[depth] = source; targetStack[depth] = target; maybeStack[depth] = {}; maybeStack[depth][id] = RelationComparisonResult.Succeeded; depth++; const saveExpandingFlags = expandingFlags; - if (!(expandingFlags & 1) && isDeeplyNestedGeneric(apparentSource, sourceStack, depth)) expandingFlags |= 1; + if (!(expandingFlags & 1) && isDeeplyNestedGeneric(source, sourceStack, depth)) expandingFlags |= 1; if (!(expandingFlags & 2) && isDeeplyNestedGeneric(target, targetStack, depth)) expandingFlags |= 2; let result: Ternary; if (expandingFlags === 3) { result = Ternary.Maybe; } else { - result = propertiesRelatedTo(apparentSource, target, reportErrors); + result = propertiesRelatedTo(source, target, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, SignatureKind.Call, reportErrors); + result &= signaturesRelatedTo(source, target, SignatureKind.Call, reportErrors); if (result) { - result &= signaturesRelatedTo(apparentSource, target, SignatureKind.Construct, reportErrors); + result &= signaturesRelatedTo(source, target, SignatureKind.Construct, reportErrors); if (result) { - result &= stringIndexTypesRelatedTo(apparentSource, originalSource, target, reportErrors); + result &= stringIndexTypesRelatedTo(source, originalSource, target, reportErrors); if (result) { - result &= numberIndexTypesRelatedTo(apparentSource, originalSource, target, reportErrors); + result &= numberIndexTypesRelatedTo(source, originalSource, target, reportErrors); } } } @@ -5763,26 +5718,19 @@ namespace ts { if (!(isMatchingSignature(source, target, partialMatch))) { return Ternary.False; } - let result = Ternary.True; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return Ternary.False; - } - for (let i = 0, len = source.typeParameters.length; i < len; ++i) { - const related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return Ternary.False; - } - result &= related; - } - } - else if (source.typeParameters || target.typeParameters) { + // Check that the two signatures have the same number of type parameters. We might consider + // also checking that any type parameter constraints match, but that would require instantiating + // the constraints with a common set of type arguments to get relatable entities in places where + // type parameters occur in the constraints. The complexity of doing that doesn't seem worthwhile, + // particularly as we're comparing erased versions of the signatures below. + if ((source.typeParameters ? source.typeParameters.length : 0) !== (target.typeParameters ? target.typeParameters.length : 0)) { return Ternary.False; } // Spec 1.0 Section 3.8.3 & 3.8.4: // M and N (the signatures) are instantiated using type Any as the type argument for all type parameters declared by M and N source = getErasedSignature(source); target = getErasedSignature(target); + let result = Ternary.True; const targetLen = target.parameters.length; for (let i = 0; i < targetLen; i++) { const s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); @@ -6315,11 +6263,18 @@ namespace ts { inferredType = emptyObjectType; inferenceSucceeded = true; } + context.inferredTypes[index] = inferredType; // Only do the constraint check if inference succeeded (to prevent cascading errors) if (inferenceSucceeded) { const constraint = getConstraintOfTypeParameter(context.typeParameters[index]); - inferredType = constraint && !isTypeAssignableTo(inferredType, constraint) ? constraint : inferredType; + if (constraint) { + const instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); + if (!isTypeAssignableTo(inferredType, instantiatedConstraint)) { + inferredType = instantiateType(constraint, createTypeEraser(context.typeParameters)); + context.inferredTypes[index] = inferredType; + } + } } else if (context.failedTypeParameterIndex === undefined || context.failedTypeParameterIndex > index) { // If inference failed, it is necessary to record the index of the failed type parameter (the one we are on). @@ -6327,7 +6282,6 @@ namespace ts { // So if this failure is on preceding type parameter, this type parameter is the new failure index. context.failedTypeParameterIndex = index; } - context.inferredTypes[index] = inferredType; } return inferredType; } @@ -6336,7 +6290,6 @@ namespace ts { for (let i = 0; i < context.inferredTypes.length; i++) { getInferredType(context, i); } - return context.inferredTypes; } @@ -8683,7 +8636,7 @@ namespace ts { function inferTypeArguments(node: CallLikeExpression, signature: Signature, args: Expression[], excludeArgument: boolean[], context: InferenceContext): void { const typeParameters = signature.typeParameters; - const inferenceMapper = createInferenceMapper(context); + const inferenceMapper = getInferenceMapper(context); // Clear out all the inference results from the last time inferTypeArguments was called on this context for (let i = 0; i < typeParameters.length; i++) { @@ -8749,14 +8702,11 @@ namespace ts { getInferredTypes(context); } - function checkTypeArguments(signature: Signature, typeArguments: TypeNode[], typeArgumentResultTypes: Type[], reportErrors: boolean, headMessage?: DiagnosticMessage): boolean { + function checkTypeArguments(signature: Signature, typeArgumentNodes: TypeNode[], typeArgumentTypes: Type[], reportErrors: boolean, headMessage?: DiagnosticMessage): boolean { const typeParameters = signature.typeParameters; let typeArgumentsAreAssignable = true; + let mapper: TypeMapper; for (let i = 0; i < typeParameters.length; i++) { - const typeArgNode = typeArguments[i]; - const typeArgument = getTypeFromTypeNode(typeArgNode); - // Do not push on this array! It has a preallocated length - typeArgumentResultTypes[i] = typeArgument; if (typeArgumentsAreAssignable /* so far */) { const constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { @@ -8766,17 +8716,15 @@ namespace ts { errorInfo = chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } - typeArgumentsAreAssignable = checkTypeAssignableTo( - typeArgument, - constraint, - reportErrors ? typeArgNode : undefined, + typeArgumentTypes[i], + instantiateType(constraint, mapper || (mapper = createTypeMapper(typeParameters, typeArgumentTypes))), + reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); } } } - return typeArgumentsAreAssignable; } @@ -9232,7 +9180,8 @@ namespace ts { } else if (candidateForTypeArgumentError) { if (!isTaggedTemplate && !isDecorator && typeArguments) { - checkTypeArguments(candidateForTypeArgumentError, (node).typeArguments, [], /*reportErrors*/ true, headMessage); + const typeArguments = (node).typeArguments; + checkTypeArguments(candidateForTypeArgumentError, typeArguments, map(typeArguments, getTypeFromTypeNode), /*reportErrors*/ true, headMessage); } else { Debug.assert(resultOfFailedInference.failedTypeParameterIndex >= 0); @@ -9299,7 +9248,7 @@ namespace ts { if (candidate.typeParameters) { let typeArgumentTypes: Type[]; if (typeArguments) { - typeArgumentTypes = new Array(candidate.typeParameters.length); + typeArgumentTypes = map(typeArguments, getTypeFromTypeNode); typeArgumentsAreValid = checkTypeArguments(candidate, typeArguments, typeArgumentTypes, /*reportErrors*/ false); } else { @@ -10823,11 +10772,10 @@ namespace ts { } checkSourceElement(node.constraint); + getConstraintOfTypeParameter(getDeclaredTypeOfTypeParameter(getSymbolOfNode(node))); if (produceDiagnostics) { - checkTypeParameterHasIllegalReferencesInConstraint(node); checkTypeNameIsReserved(node.name, Diagnostics.Type_parameter_name_cannot_be_0); } - // TODO: Check multiple declarations are identical } function checkParameter(node: ParameterDeclaration) { @@ -11238,13 +11186,19 @@ namespace ts { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]): boolean { + function checkTypeArgumentConstraints(typeParameters: TypeParameter[], typeArgumentNodes: TypeNode[]): boolean { + let typeArguments: Type[]; + let mapper: TypeMapper; let result = true; for (let i = 0; i < typeParameters.length; i++) { const constraint = getConstraintOfTypeParameter(typeParameters[i]); if (constraint) { - const typeArgument = typeArguments[i]; - result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + if (!typeArguments) { + typeArguments = map(typeArgumentNodes, getTypeFromTypeNode); + mapper = createTypeMapper(typeParameters, typeArguments); + } + result = result && checkTypeAssignableTo(typeArguments[i], instantiateType(constraint, mapper), + typeArgumentNodes[i], Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 62661706373..5b626122951 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -852,7 +852,7 @@ "category": "Error", "code": 2312 }, - "Constraint of a type parameter cannot reference any type parameter from the same type parameter list.": { + "Type parameter '{0}' has a circular constraint.": { "category": "Error", "code": 2313 }, diff --git a/src/compiler/types.ts b/src/compiler/types.ts index f8b26ddaa6d..8fd1e335db3 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2040,7 +2040,6 @@ namespace ts { resolvedSymbol?: Symbol; // Cached name resolution result flags?: NodeCheckFlags; // Set of flags specific to Node enumMemberValue?: number; // Constant value of enum member - isIllegalTypeReferenceInConstraint?: boolean; // Is type reference in constraint refers to the type parameter from the same list isVisible?: boolean; // Is this node visible generatedName?: string; // Generated name for module, enum, or import declaration generatedNames?: Map; // Generated names table for source file @@ -2281,6 +2280,7 @@ namespace ts { inferUnionTypes: boolean; // Infer union types for disjoint candidates (otherwise undefinedType) inferences: TypeInferences[]; // Inferences made for each type parameter inferredTypes: Type[]; // Inferred type for each type parameter + mapper?: TypeMapper; // Type mapper for this inference context failedTypeParameterIndex?: number; // Index of type parameter for which inference failed // It is optional because in contextual signature instantiation, nothing fails } From 3750748a277e4fd6116f9fec069131bc6b704cb3 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 1 Dec 2015 15:52:32 -0800 Subject: [PATCH 056/265] Accepting new baselines --- .../anyAssignableToEveryType2.errors.txt | 136 ---- .../anyAssignableToEveryType2.symbols | 274 +++++++ .../reference/anyAssignableToEveryType2.types | 276 +++++++ .../assertInWrapSomeTypeParameter.errors.txt | 5 +- ...ompatWithGenericCallSignatures4.errors.txt | 22 - ...ntCompatWithGenericCallSignatures4.symbols | 38 + ...mentCompatWithGenericCallSignatures4.types | 40 + .../assignmentStricterConstraints.errors.txt | 18 - .../assignmentStricterConstraints.symbols | 32 + .../assignmentStricterConstraints.types | 39 + ...onTypeOfConditionalExpressions2.errors.txt | 36 - ...ommonTypeOfConditionalExpressions2.symbols | 83 +++ ...tCommonTypeOfConditionalExpressions2.types | 95 +++ ...ectsOnInstantiatedCallSignature.errors.txt | 155 ---- ...ObjectsOnInstantiatedCallSignature.symbols | 599 +++++++++++++++ ...ipObjectsOnInstantiatedCallSignature.types | 695 ++++++++++++++++++ ...nstantiatedConstructorSignature.errors.txt | 155 ---- ...OnInstantiatedConstructorSignature.symbols | 587 +++++++++++++++ ...tsOnInstantiatedConstructorSignature.types | 683 +++++++++++++++++ ...ameterFromSameTypeParameterList.errors.txt | 45 -- ...ParameterFromSameTypeParameterList.symbols | 60 ++ ...peParameterFromSameTypeParameterList.types | 60 ++ .../constraintSatisfactionWithAny2.errors.txt | 14 - .../constraintSatisfactionWithAny2.symbols | 27 + .../constraintSatisfactionWithAny2.types | 29 + ...ThatReferenceOtherContstraints1.errors.txt | 18 - ...ntsThatReferenceOtherContstraints1.symbols | 31 + ...aintsThatReferenceOtherContstraints1.types | 31 + .../contextuallyTypingOrOperator3.errors.txt | 9 - .../contextuallyTypingOrOperator3.symbols | 15 + .../contextuallyTypingOrOperator3.types | 16 + .../reference/enumAssignability.errors.txt | 5 +- ...sNotASubtypeOfAnythingButNumber.errors.txt | 5 +- ...functionConstraintSatisfaction2.errors.txt | 9 +- ...ionWithMultipleReturnStatements.errors.txt | 11 +- ...mentCompatOfFunctionSignatures1.errors.txt | 14 - ...ignmentCompatOfFunctionSignatures1.symbols | 35 + ...ssignmentCompatOfFunctionSignatures1.types | 39 + ...nstraintsTypeArgumentInference2.errors.txt | 5 +- ...thObjectTypeArgsAndConstraints3.errors.txt | 5 +- ...thObjectTypeArgsAndConstraints4.errors.txt | 8 +- ...thObjectTypeArgsAndConstraints5.errors.txt | 8 +- ...ObjectTypeArgsAndIndexersErrors.errors.txt | 33 - ...ithObjectTypeArgsAndIndexersErrors.symbols | 76 ++ ...lWithObjectTypeArgsAndIndexersErrors.types | 84 +++ ...thObjectTypeArgsAndInitializers.errors.txt | 30 +- .../reference/genericConstraint2.errors.txt | 9 +- .../reference/genericConstraint3.errors.txt | 9 - .../reference/genericConstraint3.symbols | 21 + .../reference/genericConstraint3.types | 21 + .../genericMemberFunction.errors.txt | 17 +- ...edDeclarationUsingTypeParameter.errors.txt | 5 +- ...eExpansionThroughInstantiation2.errors.txt | 17 - ...niteExpansionThroughInstantiation2.symbols | 22 + ...finiteExpansionThroughInstantiation2.types | 22 + ...iateConstraintsToTypeArguments2.errors.txt | 17 - ...antiateConstraintsToTypeArguments2.symbols | 30 + ...stantiateConstraintsToTypeArguments2.types | 30 + ...instantiatedBaseTypeConstraints.errors.txt | 17 - .../instantiatedBaseTypeConstraints.symbols | 28 + .../instantiatedBaseTypeConstraints.types | 28 + ...nstantiatedBaseTypeConstraints2.errors.txt | 11 - .../instantiatedBaseTypeConstraints2.symbols | 21 + .../instantiatedBaseTypeConstraints2.types | 21 + ...terfaceWithMultipleDeclarations.errors.txt | 14 +- .../reference/invalidConstraint1.errors.txt | 10 +- ...chingOfObjectLiteralConstraints.errors.txt | 10 - ...matchingOfObjectLiteralConstraints.symbols | 17 + .../matchingOfObjectLiteralConstraints.types | 21 + .../reference/maxConstraints.errors.txt | 5 +- ...WrappedPropertyCheckedNominally.errors.txt | 14 +- ...sIdentityWithComplexConstraints.errors.txt | 22 - ...ypesIdentityWithComplexConstraints.symbols | 49 ++ ...tTypesIdentityWithComplexConstraints.types | 49 ++ ...gnaturesDifferingByConstraints2.errors.txt | 141 ---- ...lSignaturesDifferingByConstraints2.symbols | 462 ++++++++++++ ...allSignaturesDifferingByConstraints2.types | 468 ++++++++++++ ...gnaturesDifferingByConstraints3.errors.txt | 150 ---- ...lSignaturesDifferingByConstraints3.symbols | 497 +++++++++++++ ...allSignaturesDifferingByConstraints3.types | 503 +++++++++++++ ...gnaturesDifferingByConstraints2.errors.txt | 110 --- ...tSignaturesDifferingByConstraints2.symbols | 349 +++++++++ ...uctSignaturesDifferingByConstraints2.types | 354 +++++++++ ...gnaturesDifferingByConstraints3.errors.txt | 119 --- ...tSignaturesDifferingByConstraints3.symbols | 384 ++++++++++ ...uctSignaturesDifferingByConstraints3.types | 389 ++++++++++ .../parserGenericConstraint2.errors.txt | 5 +- .../parserGenericConstraint3.errors.txt | 5 +- .../parserGenericConstraint4.errors.txt | 5 +- .../parserGenericConstraint5.errors.txt | 5 +- .../parserGenericConstraint6.errors.txt | 5 +- .../parserGenericConstraint7.errors.txt | 5 +- .../primitiveConstraints1.errors.txt | 12 +- ...OnTypeParameterWithConstraints3.errors.txt | 77 -- ...essOnTypeParameterWithConstraints3.symbols | 190 +++++ ...ccessOnTypeParameterWithConstraints3.types | 233 ++++++ ...OnTypeParameterWithConstraints5.errors.txt | 26 +- .../recursiveGenericTypeHierarchy.errors.txt | 18 - .../recursiveGenericTypeHierarchy.symbols | 31 + .../recursiveGenericTypeHierarchy.types | 31 + .../recursiveIdenticalAssignment.errors.txt | 17 - .../recursiveIdenticalAssignment.symbols | 35 + .../recursiveIdenticalAssignment.types | 35 + ...ecursiveTypeInGenericConstraint.errors.txt | 19 - .../recursiveTypeInGenericConstraint.symbols | 39 + .../recursiveTypeInGenericConstraint.types | 40 + .../reference/recursiveTypes1.errors.txt | 22 - .../reference/recursiveTypes1.symbols | 37 + .../baselines/reference/recursiveTypes1.types | 37 + ...veTypesUsedAsFunctionParameters.errors.txt | 49 -- ...rsiveTypesUsedAsFunctionParameters.symbols | 154 ++++ ...cursiveTypesUsedAsFunctionParameters.types | 157 ++++ ...ingLiteralTypeIsSubtypeOfString.errors.txt | 22 +- .../subtypesOfTypeParameter.errors.txt | 5 +- ...sOfTypeParameterWithConstraints.errors.txt | 270 +------ ...OfTypeParameterWithConstraints2.errors.txt | 175 ----- ...pesOfTypeParameterWithConstraints2.symbols | 548 ++++++++++++++ ...typesOfTypeParameterWithConstraints2.types | 690 +++++++++++++++++ ...OfTypeParameterWithConstraints3.errors.txt | 21 - ...pesOfTypeParameterWithConstraints3.symbols | 49 ++ ...typesOfTypeParameterWithConstraints3.types | 61 ++ ...rameterWithRecursiveConstraints.errors.txt | 275 +++---- .../reference/testTypings.errors.txt | 19 - tests/baselines/reference/testTypings.symbols | 27 + tests/baselines/reference/testTypings.types | 27 + ...tInferenceTransitiveConstraints.errors.txt | 17 - ...mentInferenceTransitiveConstraints.symbols | 34 + ...gumentInferenceTransitiveConstraints.types | 39 + ...rgumentInferenceWithConstraints.errors.txt | 12 +- .../typeParamExtendsOtherTypeParam.errors.txt | 50 +- ...ameterAsTypeParameterConstraint.errors.txt | 35 - ...ParameterAsTypeParameterConstraint.symbols | 88 +++ ...peParameterAsTypeParameterConstraint.types | 120 +++ ...meterAsTypeParameterConstraint2.errors.txt | 27 - ...arameterAsTypeParameterConstraint2.symbols | 61 ++ ...eParameterAsTypeParameterConstraint2.types | 81 ++ .../typeParameterAssignability2.errors.txt | 89 +-- ...ameterAssignmentWithConstraints.errors.txt | 14 - ...ParameterAssignmentWithConstraints.symbols | 19 + ...peParameterAssignmentWithConstraints.types | 20 + ...eterDirectlyConstrainedToItself.errors.txt | 60 +- ...ypeParameterHasSelfAsConstraint.errors.txt | 6 +- .../typeParameterInConstraint1.errors.txt | 8 - .../typeParameterInConstraint1.symbols | 7 + .../typeParameterInConstraint1.types | 7 + ...erIndirectlyConstrainedToItself.errors.txt | 167 +++-- .../typeParameterOrderReversal.errors.txt | 22 - .../typeParameterOrderReversal.symbols | 42 ++ .../typeParameterOrderReversal.types | 45 ++ .../typeParameterUsedAsConstraint.errors.txt | 158 ---- .../typeParameterUsedAsConstraint.symbols | 211 ++++++ .../typeParameterUsedAsConstraint.types | 217 ++++++ ...erUsedAsTypeParameterConstraint.errors.txt | 88 --- ...meterUsedAsTypeParameterConstraint.symbols | 116 +++ ...rameterUsedAsTypeParameterConstraint.types | 126 ++++ ...rUsedAsTypeParameterConstraint2.errors.txt | 113 --- ...eterUsedAsTypeParameterConstraint2.symbols | 238 ++++++ ...ameterUsedAsTypeParameterConstraint2.types | 252 +++++++ ...rUsedAsTypeParameterConstraint4.errors.txt | 49 +- ...ameterWithInvalidConstraintType.errors.txt | 6 +- .../unspecializedConstraints.errors.txt | 11 +- ...wrappedAndRecursiveConstraints2.errors.txt | 12 - .../wrappedAndRecursiveConstraints2.symbols | 21 + .../wrappedAndRecursiveConstraints2.types | 26 + 164 files changed, 12258 insertions(+), 3107 deletions(-) delete mode 100644 tests/baselines/reference/anyAssignableToEveryType2.errors.txt create mode 100644 tests/baselines/reference/anyAssignableToEveryType2.symbols create mode 100644 tests/baselines/reference/anyAssignableToEveryType2.types delete mode 100644 tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.errors.txt create mode 100644 tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols create mode 100644 tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types delete mode 100644 tests/baselines/reference/assignmentStricterConstraints.errors.txt create mode 100644 tests/baselines/reference/assignmentStricterConstraints.symbols create mode 100644 tests/baselines/reference/assignmentStricterConstraints.types delete mode 100644 tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.errors.txt create mode 100644 tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols create mode 100644 tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types delete mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.errors.txt create mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols create mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types delete mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.errors.txt create mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols create mode 100644 tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types delete mode 100644 tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.errors.txt create mode 100644 tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols create mode 100644 tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.types delete mode 100644 tests/baselines/reference/constraintSatisfactionWithAny2.errors.txt create mode 100644 tests/baselines/reference/constraintSatisfactionWithAny2.symbols create mode 100644 tests/baselines/reference/constraintSatisfactionWithAny2.types delete mode 100644 tests/baselines/reference/constraintsThatReferenceOtherContstraints1.errors.txt create mode 100644 tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols create mode 100644 tests/baselines/reference/constraintsThatReferenceOtherContstraints1.types delete mode 100644 tests/baselines/reference/contextuallyTypingOrOperator3.errors.txt create mode 100644 tests/baselines/reference/contextuallyTypingOrOperator3.symbols create mode 100644 tests/baselines/reference/contextuallyTypingOrOperator3.types delete mode 100644 tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.errors.txt create mode 100644 tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.symbols create mode 100644 tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types delete mode 100644 tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.errors.txt create mode 100644 tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols create mode 100644 tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types delete mode 100644 tests/baselines/reference/genericConstraint3.errors.txt create mode 100644 tests/baselines/reference/genericConstraint3.symbols create mode 100644 tests/baselines/reference/genericConstraint3.types delete mode 100644 tests/baselines/reference/infiniteExpansionThroughInstantiation2.errors.txt create mode 100644 tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols create mode 100644 tests/baselines/reference/infiniteExpansionThroughInstantiation2.types delete mode 100644 tests/baselines/reference/instantiateConstraintsToTypeArguments2.errors.txt create mode 100644 tests/baselines/reference/instantiateConstraintsToTypeArguments2.symbols create mode 100644 tests/baselines/reference/instantiateConstraintsToTypeArguments2.types delete mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints.errors.txt create mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints.symbols create mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints.types delete mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints2.errors.txt create mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints2.symbols create mode 100644 tests/baselines/reference/instantiatedBaseTypeConstraints2.types delete mode 100644 tests/baselines/reference/matchingOfObjectLiteralConstraints.errors.txt create mode 100644 tests/baselines/reference/matchingOfObjectLiteralConstraints.symbols create mode 100644 tests/baselines/reference/matchingOfObjectLiteralConstraints.types delete mode 100644 tests/baselines/reference/objectTypesIdentityWithComplexConstraints.errors.txt create mode 100644 tests/baselines/reference/objectTypesIdentityWithComplexConstraints.symbols create mode 100644 tests/baselines/reference/objectTypesIdentityWithComplexConstraints.types delete mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.errors.txt create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types delete mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.errors.txt create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types delete mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.errors.txt create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types delete mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.errors.txt create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols create mode 100644 tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types delete mode 100644 tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.errors.txt create mode 100644 tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols create mode 100644 tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.types delete mode 100644 tests/baselines/reference/recursiveGenericTypeHierarchy.errors.txt create mode 100644 tests/baselines/reference/recursiveGenericTypeHierarchy.symbols create mode 100644 tests/baselines/reference/recursiveGenericTypeHierarchy.types delete mode 100644 tests/baselines/reference/recursiveIdenticalAssignment.errors.txt create mode 100644 tests/baselines/reference/recursiveIdenticalAssignment.symbols create mode 100644 tests/baselines/reference/recursiveIdenticalAssignment.types delete mode 100644 tests/baselines/reference/recursiveTypeInGenericConstraint.errors.txt create mode 100644 tests/baselines/reference/recursiveTypeInGenericConstraint.symbols create mode 100644 tests/baselines/reference/recursiveTypeInGenericConstraint.types delete mode 100644 tests/baselines/reference/recursiveTypes1.errors.txt create mode 100644 tests/baselines/reference/recursiveTypes1.symbols create mode 100644 tests/baselines/reference/recursiveTypes1.types delete mode 100644 tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.errors.txt create mode 100644 tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols create mode 100644 tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.types delete mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.errors.txt create mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols create mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.types delete mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.errors.txt create mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.symbols create mode 100644 tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.types delete mode 100644 tests/baselines/reference/testTypings.errors.txt create mode 100644 tests/baselines/reference/testTypings.symbols create mode 100644 tests/baselines/reference/testTypings.types delete mode 100644 tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.errors.txt create mode 100644 tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols create mode 100644 tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.types delete mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint.errors.txt create mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols create mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint.types delete mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint2.errors.txt create mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint2.symbols create mode 100644 tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types delete mode 100644 tests/baselines/reference/typeParameterAssignmentWithConstraints.errors.txt create mode 100644 tests/baselines/reference/typeParameterAssignmentWithConstraints.symbols create mode 100644 tests/baselines/reference/typeParameterAssignmentWithConstraints.types delete mode 100644 tests/baselines/reference/typeParameterInConstraint1.errors.txt create mode 100644 tests/baselines/reference/typeParameterInConstraint1.symbols create mode 100644 tests/baselines/reference/typeParameterInConstraint1.types delete mode 100644 tests/baselines/reference/typeParameterOrderReversal.errors.txt create mode 100644 tests/baselines/reference/typeParameterOrderReversal.symbols create mode 100644 tests/baselines/reference/typeParameterOrderReversal.types delete mode 100644 tests/baselines/reference/typeParameterUsedAsConstraint.errors.txt create mode 100644 tests/baselines/reference/typeParameterUsedAsConstraint.symbols create mode 100644 tests/baselines/reference/typeParameterUsedAsConstraint.types delete mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.errors.txt create mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.symbols create mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.types delete mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.errors.txt create mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.symbols create mode 100644 tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.types delete mode 100644 tests/baselines/reference/wrappedAndRecursiveConstraints2.errors.txt create mode 100644 tests/baselines/reference/wrappedAndRecursiveConstraints2.symbols create mode 100644 tests/baselines/reference/wrappedAndRecursiveConstraints2.types diff --git a/tests/baselines/reference/anyAssignableToEveryType2.errors.txt b/tests/baselines/reference/anyAssignableToEveryType2.errors.txt deleted file mode 100644 index e5f9a07476e..00000000000 --- a/tests/baselines/reference/anyAssignableToEveryType2.errors.txt +++ /dev/null @@ -1,136 +0,0 @@ -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts(114,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts (1 errors) ==== - // any is not a subtype of any other types, but is assignable, all the below should work - - interface I { - [x: string]: any; - foo: any; // ok, any identical to itself - } - - - interface I2 { - [x: string]: number; - foo: any; - } - - - interface I3 { - [x: string]: string; - foo: any; - } - - - interface I4 { - [x: string]: boolean; - foo: any; - } - - - interface I5 { - [x: string]: Date; - foo: any; - } - - - interface I6 { - [x: string]: RegExp; - foo: any; - } - - - interface I7 { - [x: string]: { bar: number }; - foo: any; - } - - - interface I8 { - [x: string]: number[]; - foo: any; - } - - - interface I9 { - [x: string]: I8; - foo: any; - } - - class A { foo: number; } - interface I10 { - [x: string]: A; - foo: any; - } - - class A2 { foo: T; } - interface I11 { - [x: string]: A2; - foo: any; - } - - - interface I12 { - [x: string]: (x) => number; - foo: any; - } - - - interface I13 { - [x: string]: (x: T) => T; - foo: any; - } - - - enum E { A } - interface I14 { - [x: string]: E; - foo: any; - } - - - function f() { } - module f { - export var bar = 1; - } - interface I15 { - [x: string]: typeof f; - foo: any; - } - - - class c { baz: string } - module c { - export var bar = 1; - } - interface I16 { - [x: string]: typeof c; - foo: any; - } - - - interface I17 { - [x: string]: T; - foo: any; - } - - - interface I18 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - [x: string]: U; - foo: any; - } - - - interface I19 { - [x: string]: Object; - foo: any; - } - - - interface I20 { - [x: string]: {}; - foo: any; - } - \ No newline at end of file diff --git a/tests/baselines/reference/anyAssignableToEveryType2.symbols b/tests/baselines/reference/anyAssignableToEveryType2.symbols new file mode 100644 index 00000000000..9984a3f2fb8 --- /dev/null +++ b/tests/baselines/reference/anyAssignableToEveryType2.symbols @@ -0,0 +1,274 @@ +=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts === +// any is not a subtype of any other types, but is assignable, all the below should work + +interface I { +>I : Symbol(I, Decl(anyAssignableToEveryType2.ts, 0, 0)) + + [x: string]: any; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 3, 5)) + + foo: any; // ok, any identical to itself +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 3, 21)) +} + + +interface I2 { +>I2 : Symbol(I2, Decl(anyAssignableToEveryType2.ts, 5, 1)) + + [x: string]: number; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 9, 5)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 9, 24)) +} + + +interface I3 { +>I3 : Symbol(I3, Decl(anyAssignableToEveryType2.ts, 11, 1)) + + [x: string]: string; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 15, 5)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 15, 24)) +} + + +interface I4 { +>I4 : Symbol(I4, Decl(anyAssignableToEveryType2.ts, 17, 1)) + + [x: string]: boolean; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 21, 5)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 21, 25)) +} + + +interface I5 { +>I5 : Symbol(I5, Decl(anyAssignableToEveryType2.ts, 23, 1)) + + [x: string]: Date; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 27, 5)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 27, 22)) +} + + +interface I6 { +>I6 : Symbol(I6, Decl(anyAssignableToEveryType2.ts, 29, 1)) + + [x: string]: RegExp; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 33, 5)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 33, 24)) +} + + +interface I7 { +>I7 : Symbol(I7, Decl(anyAssignableToEveryType2.ts, 35, 1)) + + [x: string]: { bar: number }; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 39, 5)) +>bar : Symbol(bar, Decl(anyAssignableToEveryType2.ts, 39, 18)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 39, 33)) +} + + +interface I8 { +>I8 : Symbol(I8, Decl(anyAssignableToEveryType2.ts, 41, 1)) + + [x: string]: number[]; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 45, 5)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 45, 26)) +} + + +interface I9 { +>I9 : Symbol(I9, Decl(anyAssignableToEveryType2.ts, 47, 1)) + + [x: string]: I8; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 51, 5)) +>I8 : Symbol(I8, Decl(anyAssignableToEveryType2.ts, 41, 1)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 51, 20)) +} + +class A { foo: number; } +>A : Symbol(A, Decl(anyAssignableToEveryType2.ts, 53, 1)) +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 55, 9)) + +interface I10 { +>I10 : Symbol(I10, Decl(anyAssignableToEveryType2.ts, 55, 24)) + + [x: string]: A; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 57, 5)) +>A : Symbol(A, Decl(anyAssignableToEveryType2.ts, 53, 1)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 57, 19)) +} + +class A2 { foo: T; } +>A2 : Symbol(A2, Decl(anyAssignableToEveryType2.ts, 59, 1)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 61, 9)) +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 61, 13)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 61, 9)) + +interface I11 { +>I11 : Symbol(I11, Decl(anyAssignableToEveryType2.ts, 61, 23)) + + [x: string]: A2; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 63, 5)) +>A2 : Symbol(A2, Decl(anyAssignableToEveryType2.ts, 59, 1)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 63, 28)) +} + + +interface I12 { +>I12 : Symbol(I12, Decl(anyAssignableToEveryType2.ts, 65, 1)) + + [x: string]: (x) => number; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 69, 5)) +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 69, 18)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 69, 31)) +} + + +interface I13 { +>I13 : Symbol(I13, Decl(anyAssignableToEveryType2.ts, 71, 1)) + + [x: string]: (x: T) => T; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 75, 5)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 75, 18)) +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 75, 21)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 75, 18)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 75, 18)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 75, 32)) +} + + +enum E { A } +>E : Symbol(E, Decl(anyAssignableToEveryType2.ts, 77, 1)) +>A : Symbol(E.A, Decl(anyAssignableToEveryType2.ts, 80, 8)) + +interface I14 { +>I14 : Symbol(I14, Decl(anyAssignableToEveryType2.ts, 80, 12)) + + [x: string]: E; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 82, 5)) +>E : Symbol(E, Decl(anyAssignableToEveryType2.ts, 77, 1)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 82, 19)) +} + + +function f() { } +>f : Symbol(f, Decl(anyAssignableToEveryType2.ts, 84, 1), Decl(anyAssignableToEveryType2.ts, 87, 16)) + +module f { +>f : Symbol(f, Decl(anyAssignableToEveryType2.ts, 84, 1), Decl(anyAssignableToEveryType2.ts, 87, 16)) + + export var bar = 1; +>bar : Symbol(bar, Decl(anyAssignableToEveryType2.ts, 89, 14)) +} +interface I15 { +>I15 : Symbol(I15, Decl(anyAssignableToEveryType2.ts, 90, 1)) + + [x: string]: typeof f; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 92, 5)) +>f : Symbol(f, Decl(anyAssignableToEveryType2.ts, 84, 1), Decl(anyAssignableToEveryType2.ts, 87, 16)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 92, 26)) +} + + +class c { baz: string } +>c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) +>baz : Symbol(baz, Decl(anyAssignableToEveryType2.ts, 97, 9)) + +module c { +>c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) + + export var bar = 1; +>bar : Symbol(bar, Decl(anyAssignableToEveryType2.ts, 99, 14)) +} +interface I16 { +>I16 : Symbol(I16, Decl(anyAssignableToEveryType2.ts, 100, 1)) + + [x: string]: typeof c; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 102, 5)) +>c : Symbol(c, Decl(anyAssignableToEveryType2.ts, 94, 1), Decl(anyAssignableToEveryType2.ts, 97, 23)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 102, 26)) +} + + +interface I17 { +>I17 : Symbol(I17, Decl(anyAssignableToEveryType2.ts, 104, 1)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 107, 14)) + + [x: string]: T; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 108, 5)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 107, 14)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 108, 19)) +} + + +interface I18 { +>I18 : Symbol(I18, Decl(anyAssignableToEveryType2.ts, 110, 1)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 113, 14)) +>U : Symbol(U, Decl(anyAssignableToEveryType2.ts, 113, 16)) +>T : Symbol(T, Decl(anyAssignableToEveryType2.ts, 113, 14)) + + [x: string]: U; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 114, 5)) +>U : Symbol(U, Decl(anyAssignableToEveryType2.ts, 113, 16)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 114, 19)) +} + + +interface I19 { +>I19 : Symbol(I19, Decl(anyAssignableToEveryType2.ts, 116, 1)) + + [x: string]: Object; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 120, 5)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 120, 24)) +} + + +interface I20 { +>I20 : Symbol(I20, Decl(anyAssignableToEveryType2.ts, 122, 1)) + + [x: string]: {}; +>x : Symbol(x, Decl(anyAssignableToEveryType2.ts, 126, 5)) + + foo: any; +>foo : Symbol(foo, Decl(anyAssignableToEveryType2.ts, 126, 20)) +} + diff --git a/tests/baselines/reference/anyAssignableToEveryType2.types b/tests/baselines/reference/anyAssignableToEveryType2.types new file mode 100644 index 00000000000..b3f54211601 --- /dev/null +++ b/tests/baselines/reference/anyAssignableToEveryType2.types @@ -0,0 +1,276 @@ +=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/anyAssignableToEveryType2.ts === +// any is not a subtype of any other types, but is assignable, all the below should work + +interface I { +>I : I + + [x: string]: any; +>x : string + + foo: any; // ok, any identical to itself +>foo : any +} + + +interface I2 { +>I2 : I2 + + [x: string]: number; +>x : string + + foo: any; +>foo : any +} + + +interface I3 { +>I3 : I3 + + [x: string]: string; +>x : string + + foo: any; +>foo : any +} + + +interface I4 { +>I4 : I4 + + [x: string]: boolean; +>x : string + + foo: any; +>foo : any +} + + +interface I5 { +>I5 : I5 + + [x: string]: Date; +>x : string +>Date : Date + + foo: any; +>foo : any +} + + +interface I6 { +>I6 : I6 + + [x: string]: RegExp; +>x : string +>RegExp : RegExp + + foo: any; +>foo : any +} + + +interface I7 { +>I7 : I7 + + [x: string]: { bar: number }; +>x : string +>bar : number + + foo: any; +>foo : any +} + + +interface I8 { +>I8 : I8 + + [x: string]: number[]; +>x : string + + foo: any; +>foo : any +} + + +interface I9 { +>I9 : I9 + + [x: string]: I8; +>x : string +>I8 : I8 + + foo: any; +>foo : any +} + +class A { foo: number; } +>A : A +>foo : number + +interface I10 { +>I10 : I10 + + [x: string]: A; +>x : string +>A : A + + foo: any; +>foo : any +} + +class A2 { foo: T; } +>A2 : A2 +>T : T +>foo : T +>T : T + +interface I11 { +>I11 : I11 + + [x: string]: A2; +>x : string +>A2 : A2 + + foo: any; +>foo : any +} + + +interface I12 { +>I12 : I12 + + [x: string]: (x) => number; +>x : string +>x : any + + foo: any; +>foo : any +} + + +interface I13 { +>I13 : I13 + + [x: string]: (x: T) => T; +>x : string +>T : T +>x : T +>T : T +>T : T + + foo: any; +>foo : any +} + + +enum E { A } +>E : E +>A : E + +interface I14 { +>I14 : I14 + + [x: string]: E; +>x : string +>E : E + + foo: any; +>foo : any +} + + +function f() { } +>f : typeof f + +module f { +>f : typeof f + + export var bar = 1; +>bar : number +>1 : number +} +interface I15 { +>I15 : I15 + + [x: string]: typeof f; +>x : string +>f : typeof f + + foo: any; +>foo : any +} + + +class c { baz: string } +>c : c +>baz : string + +module c { +>c : typeof c + + export var bar = 1; +>bar : number +>1 : number +} +interface I16 { +>I16 : I16 + + [x: string]: typeof c; +>x : string +>c : typeof c + + foo: any; +>foo : any +} + + +interface I17 { +>I17 : I17 +>T : T + + [x: string]: T; +>x : string +>T : T + + foo: any; +>foo : any +} + + +interface I18 { +>I18 : I18 +>T : T +>U : U +>T : T + + [x: string]: U; +>x : string +>U : U + + foo: any; +>foo : any +} + + +interface I19 { +>I19 : I19 + + [x: string]: Object; +>x : string +>Object : Object + + foo: any; +>foo : any +} + + +interface I20 { +>I20 : I20 + + [x: string]: {}; +>x : string + + foo: any; +>foo : any +} + diff --git a/tests/baselines/reference/assertInWrapSomeTypeParameter.errors.txt b/tests/baselines/reference/assertInWrapSomeTypeParameter.errors.txt index c5492e42e42..a7d1630c50e 100644 --- a/tests/baselines/reference/assertInWrapSomeTypeParameter.errors.txt +++ b/tests/baselines/reference/assertInWrapSomeTypeParameter.errors.txt @@ -1,11 +1,8 @@ -tests/cases/compiler/assertInWrapSomeTypeParameter.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/assertInWrapSomeTypeParameter.ts(2,26): error TS1005: '>' expected. -==== tests/cases/compiler/assertInWrapSomeTypeParameter.ts (2 errors) ==== +==== tests/cases/compiler/assertInWrapSomeTypeParameter.ts (1 errors) ==== class C> { - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. foo>(x: U) { ~ !!! error TS1005: '>' expected. diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.errors.txt b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.errors.txt deleted file mode 100644 index bc82b0fa69c..00000000000 --- a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures4.ts(7,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures4.ts(8,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures4.ts (2 errors) ==== - // some complex cases of assignment compat of generic signatures. - - interface I2 { - p: T - } - - var x: >(z: T) => void - ~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var y: >>(z: T) => void - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - // These both do not make sense as we would eventually be comparing I2 to I2>, and they are self referencing anyway - x = y - y = x - \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols new file mode 100644 index 00000000000..bcea8fbbb27 --- /dev/null +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.symbols @@ -0,0 +1,38 @@ +=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures4.ts === +// some complex cases of assignment compat of generic signatures. + +interface I2 { +>I2 : Symbol(I2, Decl(assignmentCompatWithGenericCallSignatures4.ts, 0, 0)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 13)) + + p: T +>p : Symbol(p, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 17)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 2, 13)) +} + +var x: >(z: T) => void +>x : Symbol(x, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 3)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 8)) +>I2 : Symbol(I2, Decl(assignmentCompatWithGenericCallSignatures4.ts, 0, 0)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 8)) +>z : Symbol(z, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 25)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 8)) + +var y: >>(z: T) => void +>y : Symbol(y, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 3)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 8)) +>I2 : Symbol(I2, Decl(assignmentCompatWithGenericCallSignatures4.ts, 0, 0)) +>I2 : Symbol(I2, Decl(assignmentCompatWithGenericCallSignatures4.ts, 0, 0)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 8)) +>z : Symbol(z, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 29)) +>T : Symbol(T, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 8)) + +// These both do not make sense as we would eventually be comparing I2 to I2>, and they are self referencing anyway +x = y +>x : Symbol(x, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 3)) +>y : Symbol(y, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 3)) + +y = x +>y : Symbol(y, Decl(assignmentCompatWithGenericCallSignatures4.ts, 7, 3)) +>x : Symbol(x, Decl(assignmentCompatWithGenericCallSignatures4.ts, 6, 3)) + diff --git a/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types new file mode 100644 index 00000000000..38485a78463 --- /dev/null +++ b/tests/baselines/reference/assignmentCompatWithGenericCallSignatures4.types @@ -0,0 +1,40 @@ +=== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/assignmentCompatWithGenericCallSignatures4.ts === +// some complex cases of assignment compat of generic signatures. + +interface I2 { +>I2 : I2 +>T : T + + p: T +>p : T +>T : T +} + +var x: >(z: T) => void +>x : >(z: T) => void +>T : T +>I2 : I2 +>T : T +>z : T +>T : T + +var y: >>(z: T) => void +>y : >>(z: T) => void +>T : T +>I2 : I2 +>I2 : I2 +>T : T +>z : T +>T : T + +// These both do not make sense as we would eventually be comparing I2 to I2>, and they are self referencing anyway +x = y +>x = y : >>(z: T) => void +>x : >(z: T) => void +>y : >>(z: T) => void + +y = x +>y = x : >(z: T) => void +>y : >>(z: T) => void +>x : >(z: T) => void + diff --git a/tests/baselines/reference/assignmentStricterConstraints.errors.txt b/tests/baselines/reference/assignmentStricterConstraints.errors.txt deleted file mode 100644 index bf3751dda74..00000000000 --- a/tests/baselines/reference/assignmentStricterConstraints.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -tests/cases/compiler/assignmentStricterConstraints.ts(1,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/assignmentStricterConstraints.ts(2,5): error TS2322: Type 'S' is not assignable to type 'T'. - - -==== tests/cases/compiler/assignmentStricterConstraints.ts (2 errors) ==== - var f = function (x: T, y: S): void { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y - ~ -!!! error TS2322: Type 'S' is not assignable to type 'T'. - } - - var g = function (x: T, y: S): void { } - - g = f - g(1, "") - \ No newline at end of file diff --git a/tests/baselines/reference/assignmentStricterConstraints.symbols b/tests/baselines/reference/assignmentStricterConstraints.symbols new file mode 100644 index 00000000000..aba29bf3e5b --- /dev/null +++ b/tests/baselines/reference/assignmentStricterConstraints.symbols @@ -0,0 +1,32 @@ +=== tests/cases/compiler/assignmentStricterConstraints.ts === +var f = function (x: T, y: S): void { +>f : Symbol(f, Decl(assignmentStricterConstraints.ts, 0, 3)) +>T : Symbol(T, Decl(assignmentStricterConstraints.ts, 0, 18)) +>S : Symbol(S, Decl(assignmentStricterConstraints.ts, 0, 20)) +>T : Symbol(T, Decl(assignmentStricterConstraints.ts, 0, 18)) +>x : Symbol(x, Decl(assignmentStricterConstraints.ts, 0, 34)) +>T : Symbol(T, Decl(assignmentStricterConstraints.ts, 0, 18)) +>y : Symbol(y, Decl(assignmentStricterConstraints.ts, 0, 39)) +>S : Symbol(S, Decl(assignmentStricterConstraints.ts, 0, 20)) + + x = y +>x : Symbol(x, Decl(assignmentStricterConstraints.ts, 0, 34)) +>y : Symbol(y, Decl(assignmentStricterConstraints.ts, 0, 39)) +} + +var g = function (x: T, y: S): void { } +>g : Symbol(g, Decl(assignmentStricterConstraints.ts, 4, 3)) +>T : Symbol(T, Decl(assignmentStricterConstraints.ts, 4, 18)) +>S : Symbol(S, Decl(assignmentStricterConstraints.ts, 4, 20)) +>x : Symbol(x, Decl(assignmentStricterConstraints.ts, 4, 24)) +>T : Symbol(T, Decl(assignmentStricterConstraints.ts, 4, 18)) +>y : Symbol(y, Decl(assignmentStricterConstraints.ts, 4, 29)) +>S : Symbol(S, Decl(assignmentStricterConstraints.ts, 4, 20)) + +g = f +>g : Symbol(g, Decl(assignmentStricterConstraints.ts, 4, 3)) +>f : Symbol(f, Decl(assignmentStricterConstraints.ts, 0, 3)) + +g(1, "") +>g : Symbol(g, Decl(assignmentStricterConstraints.ts, 4, 3)) + diff --git a/tests/baselines/reference/assignmentStricterConstraints.types b/tests/baselines/reference/assignmentStricterConstraints.types new file mode 100644 index 00000000000..3a72d92f51c --- /dev/null +++ b/tests/baselines/reference/assignmentStricterConstraints.types @@ -0,0 +1,39 @@ +=== tests/cases/compiler/assignmentStricterConstraints.ts === +var f = function (x: T, y: S): void { +>f : (x: T, y: S) => void +>function (x: T, y: S): void { x = y} : (x: T, y: S) => void +>T : T +>S : S +>T : T +>x : T +>T : T +>y : S +>S : S + + x = y +>x = y : S +>x : T +>y : S +} + +var g = function (x: T, y: S): void { } +>g : (x: T, y: S) => void +>function (x: T, y: S): void { } : (x: T, y: S) => void +>T : T +>S : S +>x : T +>T : T +>y : S +>S : S + +g = f +>g = f : (x: T, y: S) => void +>g : (x: T, y: S) => void +>f : (x: T, y: S) => void + +g(1, "") +>g(1, "") : void +>g : (x: T, y: S) => void +>1 : number +>"" : string + diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.errors.txt b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.errors.txt deleted file mode 100644 index 83f4678c8f3..00000000000 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.errors.txt +++ /dev/null @@ -1,36 +0,0 @@ -tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts(18,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts(22,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts(22,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts (3 errors) ==== - // conditional expressions return the best common type of the branches plus contextual type (using the first candidate if multiple BCTs exist) - // these are errors - - class Base { foo: string; } - class Derived extends Base { bar: string; } - class Derived2 extends Base { baz: string; } - var base: Base; - var derived: Derived; - var derived2: Derived2; - - var r2 = true ? 1 : ''; - var r9 = true ? derived : derived2; - - function foo(t: T, u: U) { - return true ? t : u; - } - - function foo2(t: T, u: U) { // Error for referencing own type parameter - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - return true ? t : u; // Ok because BCT(T, U) = U - } - - function foo3(t: T, u: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - return true ? t : u; - } \ No newline at end of file diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols new file mode 100644 index 00000000000..68103761051 --- /dev/null +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.symbols @@ -0,0 +1,83 @@ +=== tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts === +// conditional expressions return the best common type of the branches plus contextual type (using the first candidate if multiple BCTs exist) +// these are errors + +class Base { foo: string; } +>Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) +>foo : Symbol(foo, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 12)) + +class Derived extends Base { bar: string; } +>Derived : Symbol(Derived, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 27)) +>Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) +>bar : Symbol(bar, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 28)) + +class Derived2 extends Base { baz: string; } +>Derived2 : Symbol(Derived2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 43)) +>Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) +>baz : Symbol(baz, Decl(bestCommonTypeOfConditionalExpressions2.ts, 5, 29)) + +var base: Base; +>base : Symbol(base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 6, 3)) +>Base : Symbol(Base, Decl(bestCommonTypeOfConditionalExpressions2.ts, 0, 0)) + +var derived: Derived; +>derived : Symbol(derived, Decl(bestCommonTypeOfConditionalExpressions2.ts, 7, 3)) +>Derived : Symbol(Derived, Decl(bestCommonTypeOfConditionalExpressions2.ts, 3, 27)) + +var derived2: Derived2; +>derived2 : Symbol(derived2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 8, 3)) +>Derived2 : Symbol(Derived2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 4, 43)) + +var r2 = true ? 1 : ''; +>r2 : Symbol(r2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 10, 3)) + +var r9 = true ? derived : derived2; +>r9 : Symbol(r9, Decl(bestCommonTypeOfConditionalExpressions2.ts, 11, 3)) +>derived : Symbol(derived, Decl(bestCommonTypeOfConditionalExpressions2.ts, 7, 3)) +>derived2 : Symbol(derived2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 8, 3)) + +function foo(t: T, u: U) { +>foo : Symbol(foo, Decl(bestCommonTypeOfConditionalExpressions2.ts, 11, 35)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 13)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 15)) +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 19)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 13)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 24)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 15)) + + return true ? t : u; +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 19)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 13, 24)) +} + +function foo2(t: T, u: U) { // Error for referencing own type parameter +>foo2 : Symbol(foo2, Decl(bestCommonTypeOfConditionalExpressions2.ts, 15, 1)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 14)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 26)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 26)) +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 30)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 14)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 35)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 26)) + + return true ? t : u; // Ok because BCT(T, U) = U +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 30)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 17, 35)) +} + +function foo3(t: T, u: U) { +>foo3 : Symbol(foo3, Decl(bestCommonTypeOfConditionalExpressions2.ts, 19, 1)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 14)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 26)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 26)) +>V : Symbol(V, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 39)) +>V : Symbol(V, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 39)) +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 43)) +>T : Symbol(T, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 14)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 48)) +>U : Symbol(U, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 26)) + + return true ? t : u; +>t : Symbol(t, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 43)) +>u : Symbol(u, Decl(bestCommonTypeOfConditionalExpressions2.ts, 21, 48)) +} diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types new file mode 100644 index 00000000000..ef9ecfb2a11 --- /dev/null +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions2.types @@ -0,0 +1,95 @@ +=== tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfConditionalExpressions2.ts === +// conditional expressions return the best common type of the branches plus contextual type (using the first candidate if multiple BCTs exist) +// these are errors + +class Base { foo: string; } +>Base : Base +>foo : string + +class Derived extends Base { bar: string; } +>Derived : Derived +>Base : Base +>bar : string + +class Derived2 extends Base { baz: string; } +>Derived2 : Derived2 +>Base : Base +>baz : string + +var base: Base; +>base : Base +>Base : Base + +var derived: Derived; +>derived : Derived +>Derived : Derived + +var derived2: Derived2; +>derived2 : Derived2 +>Derived2 : Derived2 + +var r2 = true ? 1 : ''; +>r2 : number | string +>true ? 1 : '' : number | string +>true : boolean +>1 : number +>'' : string + +var r9 = true ? derived : derived2; +>r9 : Derived | Derived2 +>true ? derived : derived2 : Derived | Derived2 +>true : boolean +>derived : Derived +>derived2 : Derived2 + +function foo(t: T, u: U) { +>foo : (t: T, u: U) => T | U +>T : T +>U : U +>t : T +>T : T +>u : U +>U : U + + return true ? t : u; +>true ? t : u : T | U +>true : boolean +>t : T +>u : U +} + +function foo2(t: T, u: U) { // Error for referencing own type parameter +>foo2 : (t: T, u: U) => U +>T : T +>U : U +>U : U +>t : T +>T : T +>u : U +>U : U + + return true ? t : u; // Ok because BCT(T, U) = U +>true ? t : u : U +>true : boolean +>t : T +>u : U +} + +function foo3(t: T, u: U) { +>foo3 : (t: T, u: U) => U +>T : T +>U : U +>U : U +>V : V +>V : V +>t : T +>T : T +>u : U +>U : U + + return true ? t : u; +>true ? t : u : U +>true : boolean +>t : T +>u : U +} diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.errors.txt b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.errors.txt deleted file mode 100644 index 908f97345a1..00000000000 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.errors.txt +++ /dev/null @@ -1,155 +0,0 @@ -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts(28,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts (1 errors) ==== - class Base { - public a: string; - } - - class Derived extends Base { - public b: string; - } - - class C { - public c: string; - } - - var a1: { fn(x: T): T }; - var b1: { fn(): string }; - - var a2: { fn(x: T): T }; - var b2: { fn(x: string): number }; - - var a3: { fn(x?: T): T }; - var b3: { fn(x?: string): number }; - - var a4: { fn(...x: T[]): T }; - var b4: { fn(...x: string[]): number }; - - var a5: { fn(x: T, y: T): T }; - var b5: { fn(x: string, y: number): string }; - - var a6: { fn(x: T, y: U): T }; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b6: { fn(x: Base, y: C): Base }; - - // operator < - var r1a1 = a1 < b1; - var r1a2 = a2 < b2; - var r1a3 = a3 < b3; - var r1a4 = a4 < b4; - var r1a5 = a5 < b5; - var r1a6 = a6 < b6; - - var r1b1 = b1 < a1; - var r1b2 = b2 < a2; - var r1b3 = b3 < a3; - var r1b4 = b4 < a4; - var r1b5 = b5 < a5; - var r1b6 = b6 < a6; - - // operator > - var r2a1 = a1 > b1; - var r2a2 = a2 > b2; - var r2a3 = a3 > b3; - var r2a4 = a4 > b4; - var r2a5 = a5 > b5; - var r2a6 = a6 > b6; - - var r2b1 = b1 > a1; - var r2b2 = b2 > a2; - var r2b3 = b3 > a3; - var r2b4 = b4 > a4; - var r2b5 = b5 > a5; - var r2b6 = b6 > a6; - - // operator <= - var r3a1 = a1 <= b1; - var r3a2 = a2 <= b2; - var r3a3 = a3 <= b3; - var r3a4 = a4 <= b4; - var r3a5 = a5 <= b5; - var r3a6 = a6 <= b6; - - var r3b1 = b1 <= a1; - var r3b2 = b2 <= a2; - var r3b3 = b3 <= a3; - var r3b4 = b4 <= a4; - var r3b5 = b5 <= a5; - var r3b6 = b6 <= a6; - - // operator >= - var r4a1 = a1 >= b1; - var r4a2 = a2 >= b2; - var r4a3 = a3 >= b3; - var r4a4 = a4 >= b4; - var r4a5 = a5 >= b5; - var r4a6 = a6 >= b6; - - var r4b1 = b1 >= a1; - var r4b2 = b2 >= a2; - var r4b3 = b3 >= a3; - var r4b4 = b4 >= a4; - var r4b5 = b5 >= a5; - var r4b6 = b6 >= a6; - - // operator == - var r5a1 = a1 == b1; - var r5a2 = a2 == b2; - var r5a3 = a3 == b3; - var r5a4 = a4 == b4; - var r5a5 = a5 == b5; - var r5a6 = a6 == b6; - - var r5b1 = b1 == a1; - var r5b2 = b2 == a2; - var r5b3 = b3 == a3; - var r5b4 = b4 == a4; - var r5b5 = b5 == a5; - var r5b6 = b6 == a6; - - // operator != - var r6a1 = a1 != b1; - var r6a2 = a2 != b2; - var r6a3 = a3 != b3; - var r6a4 = a4 != b4; - var r6a5 = a5 != b5; - var r6a6 = a6 != b6; - - var r6b1 = b1 != a1; - var r6b2 = b2 != a2; - var r6b3 = b3 != a3; - var r6b4 = b4 != a4; - var r6b5 = b5 != a5; - var r6b6 = b6 != a6; - - // operator === - var r7a1 = a1 === b1; - var r7a2 = a2 === b2; - var r7a3 = a3 === b3; - var r7a4 = a4 === b4; - var r7a5 = a5 === b5; - var r7a6 = a6 === b6; - - var r7b1 = b1 === a1; - var r7b2 = b2 === a2; - var r7b3 = b3 === a3; - var r7b4 = b4 === a4; - var r7b5 = b5 === a5; - var r7b6 = b6 === a6; - - // operator !== - var r8a1 = a1 !== b1; - var r8a2 = a2 !== b2; - var r8a3 = a3 !== b3; - var r8a4 = a4 !== b4; - var r8a5 = a5 !== b5; - var r8a6 = a6 !== b6; - - var r8b1 = b1 !== a1; - var r8b2 = b2 !== a2; - var r8b3 = b3 !== a3; - var r8b4 = b4 !== a4; - var r8b5 = b5 !== a5; - var r8b6 = b6 !== a6; \ No newline at end of file diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols new file mode 100644 index 00000000000..ef92cdd676a --- /dev/null +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.symbols @@ -0,0 +1,599 @@ +=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts === +class Base { +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) + + public a: string; +>a : Symbol(a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 12)) +} + +class Derived extends Base { +>Derived : Symbol(Derived, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 2, 1)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) + + public b: string; +>b : Symbol(b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 4, 28)) +} + +class C { +>C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 6, 1)) + + public c: string; +>c : Symbol(c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 8, 9)) +} + +var a1: { fn(x: T): T }; +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 16)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 13)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 13)) + +var b1: { fn(): string }; +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 9)) + +var a2: { fn(x: T): T }; +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 16)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 13)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 13)) + +var b2: { fn(x: string): number }; +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 9)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 13)) + +var a3: { fn(x?: T): T }; +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 16)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 13)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 13)) + +var b3: { fn(x?: string): number }; +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 9)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 13)) + +var a4: { fn(...x: T[]): T }; +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 16)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 13)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 13)) + +var b4: { fn(...x: string[]): number }; +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 9)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 13)) + +var a5: { fn(x: T, y: T): T }; +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 16)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 13)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 21)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 13)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 13)) + +var b5: { fn(x: string, y: number): string }; +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 9)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 13)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 23)) + +var a6: { fn(x: T, y: U): T }; +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 9)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 13)) +>U : Symbol(U, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 13)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 29)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 13)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 34)) +>U : Symbol(U, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 13)) + +var b6: { fn(x: Base, y: C): Base }; +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>fn : Symbol(fn, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 9)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 13)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 21)) +>C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 6, 1)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 0, 0)) + +// operator < +var r1a1 = a1 < b1; +>r1a1 : Symbol(r1a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 31, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r1a2 = a2 < b2; +>r1a2 : Symbol(r1a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 32, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r1a3 = a3 < b3; +>r1a3 : Symbol(r1a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 33, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r1a4 = a4 < b4; +>r1a4 : Symbol(r1a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 34, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r1a5 = a5 < b5; +>r1a5 : Symbol(r1a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 35, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r1a6 = a6 < b6; +>r1a6 : Symbol(r1a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 36, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r1b1 = b1 < a1; +>r1b1 : Symbol(r1b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 38, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r1b2 = b2 < a2; +>r1b2 : Symbol(r1b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 39, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r1b3 = b3 < a3; +>r1b3 : Symbol(r1b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 40, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r1b4 = b4 < a4; +>r1b4 : Symbol(r1b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 41, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r1b5 = b5 < a5; +>r1b5 : Symbol(r1b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 42, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r1b6 = b6 < a6; +>r1b6 : Symbol(r1b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 43, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator > +var r2a1 = a1 > b1; +>r2a1 : Symbol(r2a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 46, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r2a2 = a2 > b2; +>r2a2 : Symbol(r2a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 47, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r2a3 = a3 > b3; +>r2a3 : Symbol(r2a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 48, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r2a4 = a4 > b4; +>r2a4 : Symbol(r2a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 49, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r2a5 = a5 > b5; +>r2a5 : Symbol(r2a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 50, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r2a6 = a6 > b6; +>r2a6 : Symbol(r2a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 51, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r2b1 = b1 > a1; +>r2b1 : Symbol(r2b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 53, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r2b2 = b2 > a2; +>r2b2 : Symbol(r2b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 54, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r2b3 = b3 > a3; +>r2b3 : Symbol(r2b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 55, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r2b4 = b4 > a4; +>r2b4 : Symbol(r2b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 56, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r2b5 = b5 > a5; +>r2b5 : Symbol(r2b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 57, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r2b6 = b6 > a6; +>r2b6 : Symbol(r2b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 58, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator <= +var r3a1 = a1 <= b1; +>r3a1 : Symbol(r3a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 61, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r3a2 = a2 <= b2; +>r3a2 : Symbol(r3a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 62, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r3a3 = a3 <= b3; +>r3a3 : Symbol(r3a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 63, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r3a4 = a4 <= b4; +>r3a4 : Symbol(r3a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 64, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r3a5 = a5 <= b5; +>r3a5 : Symbol(r3a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 65, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r3a6 = a6 <= b6; +>r3a6 : Symbol(r3a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 66, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r3b1 = b1 <= a1; +>r3b1 : Symbol(r3b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 68, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r3b2 = b2 <= a2; +>r3b2 : Symbol(r3b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 69, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r3b3 = b3 <= a3; +>r3b3 : Symbol(r3b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 70, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r3b4 = b4 <= a4; +>r3b4 : Symbol(r3b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 71, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r3b5 = b5 <= a5; +>r3b5 : Symbol(r3b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 72, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r3b6 = b6 <= a6; +>r3b6 : Symbol(r3b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 73, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator >= +var r4a1 = a1 >= b1; +>r4a1 : Symbol(r4a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 76, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r4a2 = a2 >= b2; +>r4a2 : Symbol(r4a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 77, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r4a3 = a3 >= b3; +>r4a3 : Symbol(r4a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 78, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r4a4 = a4 >= b4; +>r4a4 : Symbol(r4a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 79, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r4a5 = a5 >= b5; +>r4a5 : Symbol(r4a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 80, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r4a6 = a6 >= b6; +>r4a6 : Symbol(r4a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 81, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r4b1 = b1 >= a1; +>r4b1 : Symbol(r4b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 83, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r4b2 = b2 >= a2; +>r4b2 : Symbol(r4b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 84, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r4b3 = b3 >= a3; +>r4b3 : Symbol(r4b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 85, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r4b4 = b4 >= a4; +>r4b4 : Symbol(r4b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 86, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r4b5 = b5 >= a5; +>r4b5 : Symbol(r4b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 87, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r4b6 = b6 >= a6; +>r4b6 : Symbol(r4b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 88, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator == +var r5a1 = a1 == b1; +>r5a1 : Symbol(r5a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 91, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r5a2 = a2 == b2; +>r5a2 : Symbol(r5a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 92, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r5a3 = a3 == b3; +>r5a3 : Symbol(r5a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 93, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r5a4 = a4 == b4; +>r5a4 : Symbol(r5a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 94, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r5a5 = a5 == b5; +>r5a5 : Symbol(r5a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 95, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r5a6 = a6 == b6; +>r5a6 : Symbol(r5a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 96, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r5b1 = b1 == a1; +>r5b1 : Symbol(r5b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 98, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r5b2 = b2 == a2; +>r5b2 : Symbol(r5b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 99, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r5b3 = b3 == a3; +>r5b3 : Symbol(r5b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 100, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r5b4 = b4 == a4; +>r5b4 : Symbol(r5b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 101, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r5b5 = b5 == a5; +>r5b5 : Symbol(r5b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 102, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r5b6 = b6 == a6; +>r5b6 : Symbol(r5b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 103, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator != +var r6a1 = a1 != b1; +>r6a1 : Symbol(r6a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 106, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r6a2 = a2 != b2; +>r6a2 : Symbol(r6a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 107, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r6a3 = a3 != b3; +>r6a3 : Symbol(r6a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 108, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r6a4 = a4 != b4; +>r6a4 : Symbol(r6a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 109, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r6a5 = a5 != b5; +>r6a5 : Symbol(r6a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 110, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r6a6 = a6 != b6; +>r6a6 : Symbol(r6a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 111, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r6b1 = b1 != a1; +>r6b1 : Symbol(r6b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 113, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r6b2 = b2 != a2; +>r6b2 : Symbol(r6b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 114, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r6b3 = b3 != a3; +>r6b3 : Symbol(r6b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 115, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r6b4 = b4 != a4; +>r6b4 : Symbol(r6b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 116, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r6b5 = b5 != a5; +>r6b5 : Symbol(r6b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 117, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r6b6 = b6 != a6; +>r6b6 : Symbol(r6b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 118, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator === +var r7a1 = a1 === b1; +>r7a1 : Symbol(r7a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 121, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r7a2 = a2 === b2; +>r7a2 : Symbol(r7a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 122, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r7a3 = a3 === b3; +>r7a3 : Symbol(r7a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 123, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r7a4 = a4 === b4; +>r7a4 : Symbol(r7a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 124, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r7a5 = a5 === b5; +>r7a5 : Symbol(r7a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 125, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r7a6 = a6 === b6; +>r7a6 : Symbol(r7a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 126, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r7b1 = b1 === a1; +>r7b1 : Symbol(r7b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 128, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r7b2 = b2 === a2; +>r7b2 : Symbol(r7b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 129, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r7b3 = b3 === a3; +>r7b3 : Symbol(r7b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 130, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r7b4 = b4 === a4; +>r7b4 : Symbol(r7b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 131, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r7b5 = b5 === a5; +>r7b5 : Symbol(r7b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 132, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r7b6 = b6 === a6; +>r7b6 : Symbol(r7b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 133, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + +// operator !== +var r8a1 = a1 !== b1; +>r8a1 : Symbol(r8a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 136, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) + +var r8a2 = a2 !== b2; +>r8a2 : Symbol(r8a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 137, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) + +var r8a3 = a3 !== b3; +>r8a3 : Symbol(r8a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 138, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) + +var r8a4 = a4 !== b4; +>r8a4 : Symbol(r8a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 139, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) + +var r8a5 = a5 !== b5; +>r8a5 : Symbol(r8a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 140, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) + +var r8a6 = a6 !== b6; +>r8a6 : Symbol(r8a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 141, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) + +var r8b1 = b1 !== a1; +>r8b1 : Symbol(r8b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 143, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 12, 3)) + +var r8b2 = b2 !== a2; +>r8b2 : Symbol(r8b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 144, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 15, 3)) + +var r8b3 = b3 !== a3; +>r8b3 : Symbol(r8b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 145, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 18, 3)) + +var r8b4 = b4 !== a4; +>r8b4 : Symbol(r8b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 146, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 21, 3)) + +var r8b5 = b5 !== a5; +>r8b5 : Symbol(r8b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 147, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 24, 3)) + +var r8b6 = b6 !== a6; +>r8b6 : Symbol(r8b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 148, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts, 27, 3)) + diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types new file mode 100644 index 00000000000..d1e7b6c78da --- /dev/null +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.types @@ -0,0 +1,695 @@ +=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedCallSignature.ts === +class Base { +>Base : Base + + public a: string; +>a : string +} + +class Derived extends Base { +>Derived : Derived +>Base : Base + + public b: string; +>b : string +} + +class C { +>C : C + + public c: string; +>c : string +} + +var a1: { fn(x: T): T }; +>a1 : { fn(x: T): T; } +>fn : (x: T) => T +>T : T +>x : T +>T : T +>T : T + +var b1: { fn(): string }; +>b1 : { fn(): string; } +>fn : () => string + +var a2: { fn(x: T): T }; +>a2 : { fn(x: T): T; } +>fn : (x: T) => T +>T : T +>x : T +>T : T +>T : T + +var b2: { fn(x: string): number }; +>b2 : { fn(x: string): number; } +>fn : (x: string) => number +>x : string + +var a3: { fn(x?: T): T }; +>a3 : { fn(x?: T): T; } +>fn : (x?: T) => T +>T : T +>x : T +>T : T +>T : T + +var b3: { fn(x?: string): number }; +>b3 : { fn(x?: string): number; } +>fn : (x?: string) => number +>x : string + +var a4: { fn(...x: T[]): T }; +>a4 : { fn(...x: T[]): T; } +>fn : (...x: T[]) => T +>T : T +>x : T[] +>T : T +>T : T + +var b4: { fn(...x: string[]): number }; +>b4 : { fn(...x: string[]): number; } +>fn : (...x: string[]) => number +>x : string[] + +var a5: { fn(x: T, y: T): T }; +>a5 : { fn(x: T, y: T): T; } +>fn : (x: T, y: T) => T +>T : T +>x : T +>T : T +>y : T +>T : T +>T : T + +var b5: { fn(x: string, y: number): string }; +>b5 : { fn(x: string, y: number): string; } +>fn : (x: string, y: number) => string +>x : string +>y : number + +var a6: { fn(x: T, y: U): T }; +>a6 : { fn(x: T, y: U): T; } +>fn : (x: T, y: U) => T +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + +var b6: { fn(x: Base, y: C): Base }; +>b6 : { fn(x: Base, y: C): Base; } +>fn : (x: Base, y: C) => Base +>x : Base +>Base : Base +>y : C +>C : C +>Base : Base + +// operator < +var r1a1 = a1 < b1; +>r1a1 : boolean +>a1 < b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r1a2 = a2 < b2; +>r1a2 : boolean +>a2 < b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r1a3 = a3 < b3; +>r1a3 : boolean +>a3 < b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r1a4 = a4 < b4; +>r1a4 : boolean +>a4 < b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r1a5 = a5 < b5; +>r1a5 : boolean +>a5 < b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r1a6 = a6 < b6; +>r1a6 : boolean +>a6 < b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r1b1 = b1 < a1; +>r1b1 : boolean +>b1 < a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r1b2 = b2 < a2; +>r1b2 : boolean +>b2 < a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r1b3 = b3 < a3; +>r1b3 : boolean +>b3 < a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r1b4 = b4 < a4; +>r1b4 : boolean +>b4 < a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r1b5 = b5 < a5; +>r1b5 : boolean +>b5 < a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r1b6 = b6 < a6; +>r1b6 : boolean +>b6 < a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator > +var r2a1 = a1 > b1; +>r2a1 : boolean +>a1 > b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r2a2 = a2 > b2; +>r2a2 : boolean +>a2 > b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r2a3 = a3 > b3; +>r2a3 : boolean +>a3 > b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r2a4 = a4 > b4; +>r2a4 : boolean +>a4 > b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r2a5 = a5 > b5; +>r2a5 : boolean +>a5 > b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r2a6 = a6 > b6; +>r2a6 : boolean +>a6 > b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r2b1 = b1 > a1; +>r2b1 : boolean +>b1 > a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r2b2 = b2 > a2; +>r2b2 : boolean +>b2 > a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r2b3 = b3 > a3; +>r2b3 : boolean +>b3 > a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r2b4 = b4 > a4; +>r2b4 : boolean +>b4 > a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r2b5 = b5 > a5; +>r2b5 : boolean +>b5 > a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r2b6 = b6 > a6; +>r2b6 : boolean +>b6 > a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator <= +var r3a1 = a1 <= b1; +>r3a1 : boolean +>a1 <= b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r3a2 = a2 <= b2; +>r3a2 : boolean +>a2 <= b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r3a3 = a3 <= b3; +>r3a3 : boolean +>a3 <= b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r3a4 = a4 <= b4; +>r3a4 : boolean +>a4 <= b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r3a5 = a5 <= b5; +>r3a5 : boolean +>a5 <= b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r3a6 = a6 <= b6; +>r3a6 : boolean +>a6 <= b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r3b1 = b1 <= a1; +>r3b1 : boolean +>b1 <= a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r3b2 = b2 <= a2; +>r3b2 : boolean +>b2 <= a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r3b3 = b3 <= a3; +>r3b3 : boolean +>b3 <= a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r3b4 = b4 <= a4; +>r3b4 : boolean +>b4 <= a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r3b5 = b5 <= a5; +>r3b5 : boolean +>b5 <= a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r3b6 = b6 <= a6; +>r3b6 : boolean +>b6 <= a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator >= +var r4a1 = a1 >= b1; +>r4a1 : boolean +>a1 >= b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r4a2 = a2 >= b2; +>r4a2 : boolean +>a2 >= b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r4a3 = a3 >= b3; +>r4a3 : boolean +>a3 >= b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r4a4 = a4 >= b4; +>r4a4 : boolean +>a4 >= b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r4a5 = a5 >= b5; +>r4a5 : boolean +>a5 >= b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r4a6 = a6 >= b6; +>r4a6 : boolean +>a6 >= b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r4b1 = b1 >= a1; +>r4b1 : boolean +>b1 >= a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r4b2 = b2 >= a2; +>r4b2 : boolean +>b2 >= a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r4b3 = b3 >= a3; +>r4b3 : boolean +>b3 >= a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r4b4 = b4 >= a4; +>r4b4 : boolean +>b4 >= a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r4b5 = b5 >= a5; +>r4b5 : boolean +>b5 >= a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r4b6 = b6 >= a6; +>r4b6 : boolean +>b6 >= a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator == +var r5a1 = a1 == b1; +>r5a1 : boolean +>a1 == b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r5a2 = a2 == b2; +>r5a2 : boolean +>a2 == b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r5a3 = a3 == b3; +>r5a3 : boolean +>a3 == b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r5a4 = a4 == b4; +>r5a4 : boolean +>a4 == b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r5a5 = a5 == b5; +>r5a5 : boolean +>a5 == b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r5a6 = a6 == b6; +>r5a6 : boolean +>a6 == b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r5b1 = b1 == a1; +>r5b1 : boolean +>b1 == a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r5b2 = b2 == a2; +>r5b2 : boolean +>b2 == a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r5b3 = b3 == a3; +>r5b3 : boolean +>b3 == a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r5b4 = b4 == a4; +>r5b4 : boolean +>b4 == a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r5b5 = b5 == a5; +>r5b5 : boolean +>b5 == a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r5b6 = b6 == a6; +>r5b6 : boolean +>b6 == a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator != +var r6a1 = a1 != b1; +>r6a1 : boolean +>a1 != b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r6a2 = a2 != b2; +>r6a2 : boolean +>a2 != b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r6a3 = a3 != b3; +>r6a3 : boolean +>a3 != b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r6a4 = a4 != b4; +>r6a4 : boolean +>a4 != b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r6a5 = a5 != b5; +>r6a5 : boolean +>a5 != b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r6a6 = a6 != b6; +>r6a6 : boolean +>a6 != b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r6b1 = b1 != a1; +>r6b1 : boolean +>b1 != a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r6b2 = b2 != a2; +>r6b2 : boolean +>b2 != a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r6b3 = b3 != a3; +>r6b3 : boolean +>b3 != a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r6b4 = b4 != a4; +>r6b4 : boolean +>b4 != a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r6b5 = b5 != a5; +>r6b5 : boolean +>b5 != a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r6b6 = b6 != a6; +>r6b6 : boolean +>b6 != a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator === +var r7a1 = a1 === b1; +>r7a1 : boolean +>a1 === b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r7a2 = a2 === b2; +>r7a2 : boolean +>a2 === b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r7a3 = a3 === b3; +>r7a3 : boolean +>a3 === b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r7a4 = a4 === b4; +>r7a4 : boolean +>a4 === b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r7a5 = a5 === b5; +>r7a5 : boolean +>a5 === b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r7a6 = a6 === b6; +>r7a6 : boolean +>a6 === b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r7b1 = b1 === a1; +>r7b1 : boolean +>b1 === a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r7b2 = b2 === a2; +>r7b2 : boolean +>b2 === a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r7b3 = b3 === a3; +>r7b3 : boolean +>b3 === a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r7b4 = b4 === a4; +>r7b4 : boolean +>b4 === a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r7b5 = b5 === a5; +>r7b5 : boolean +>b5 === a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r7b6 = b6 === a6; +>r7b6 : boolean +>b6 === a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + +// operator !== +var r8a1 = a1 !== b1; +>r8a1 : boolean +>a1 !== b1 : boolean +>a1 : { fn(x: T): T; } +>b1 : { fn(): string; } + +var r8a2 = a2 !== b2; +>r8a2 : boolean +>a2 !== b2 : boolean +>a2 : { fn(x: T): T; } +>b2 : { fn(x: string): number; } + +var r8a3 = a3 !== b3; +>r8a3 : boolean +>a3 !== b3 : boolean +>a3 : { fn(x?: T): T; } +>b3 : { fn(x?: string): number; } + +var r8a4 = a4 !== b4; +>r8a4 : boolean +>a4 !== b4 : boolean +>a4 : { fn(...x: T[]): T; } +>b4 : { fn(...x: string[]): number; } + +var r8a5 = a5 !== b5; +>r8a5 : boolean +>a5 !== b5 : boolean +>a5 : { fn(x: T, y: T): T; } +>b5 : { fn(x: string, y: number): string; } + +var r8a6 = a6 !== b6; +>r8a6 : boolean +>a6 !== b6 : boolean +>a6 : { fn(x: T, y: U): T; } +>b6 : { fn(x: Base, y: C): Base; } + +var r8b1 = b1 !== a1; +>r8b1 : boolean +>b1 !== a1 : boolean +>b1 : { fn(): string; } +>a1 : { fn(x: T): T; } + +var r8b2 = b2 !== a2; +>r8b2 : boolean +>b2 !== a2 : boolean +>b2 : { fn(x: string): number; } +>a2 : { fn(x: T): T; } + +var r8b3 = b3 !== a3; +>r8b3 : boolean +>b3 !== a3 : boolean +>b3 : { fn(x?: string): number; } +>a3 : { fn(x?: T): T; } + +var r8b4 = b4 !== a4; +>r8b4 : boolean +>b4 !== a4 : boolean +>b4 : { fn(...x: string[]): number; } +>a4 : { fn(...x: T[]): T; } + +var r8b5 = b5 !== a5; +>r8b5 : boolean +>b5 !== a5 : boolean +>b5 : { fn(x: string, y: number): string; } +>a5 : { fn(x: T, y: T): T; } + +var r8b6 = b6 !== a6; +>r8b6 : boolean +>b6 !== a6 : boolean +>b6 : { fn(x: Base, y: C): Base; } +>a6 : { fn(x: T, y: U): T; } + diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.errors.txt b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.errors.txt deleted file mode 100644 index 5364fea089c..00000000000 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.errors.txt +++ /dev/null @@ -1,155 +0,0 @@ -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts(28,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts (1 errors) ==== - class Base { - public a: string; - } - - class Derived extends Base { - public b: string; - } - - class C { - public c: string; - } - - var a1: { new (x: T): T }; - var b1: { new (): string }; - - var a2: { new (x: T): T }; - var b2: { new (x: string): number }; - - var a3: { new (x?: T): T }; - var b3: { new (x?: string): number }; - - var a4: { new (...x: T[]): T }; - var b4: { new (...x: string[]): number }; - - var a5: { new (x: T, y: T): T }; - var b5: { new (x: string, y: number): string }; - - var a6: { new (x: T, y: U): T }; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b6: { new (x: Base, y: C): Base }; - - // operator < - var r1a1 = a1 < b1; - var r1a2 = a2 < b2; - var r1a3 = a3 < b3; - var r1a4 = a4 < b4; - var r1a5 = a5 < b5; - var r1a6 = a6 < b6; - - var r1b1 = b1 < a1; - var r1b2 = b2 < a2; - var r1b3 = b3 < a3; - var r1b4 = b4 < a4; - var r1b5 = b5 < a5; - var r1b6 = b6 < a6; - - // operator > - var r2a1 = a1 > b1; - var r2a2 = a2 > b2; - var r2a3 = a3 > b3; - var r2a4 = a4 > b4; - var r2a5 = a5 > b5; - var r2a6 = a6 > b6; - - var r2b1 = b1 > a1; - var r2b2 = b2 > a2; - var r2b3 = b3 > a3; - var r2b4 = b4 > a4; - var r2b5 = b5 > a5; - var r2b6 = b6 > a6; - - // operator <= - var r3a1 = a1 <= b1; - var r3a2 = a2 <= b2; - var r3a3 = a3 <= b3; - var r3a4 = a4 <= b4; - var r3a5 = a5 <= b5; - var r3a6 = a6 <= b6; - - var r3b1 = b1 <= a1; - var r3b2 = b2 <= a2; - var r3b3 = b3 <= a3; - var r3b4 = b4 <= a4; - var r3b5 = b5 <= a5; - var r3b6 = b6 <= a6; - - // operator >= - var r4a1 = a1 >= b1; - var r4a2 = a2 >= b2; - var r4a3 = a3 >= b3; - var r4a4 = a4 >= b4; - var r4a5 = a5 >= b5; - var r4a6 = a6 >= b6; - - var r4b1 = b1 >= a1; - var r4b2 = b2 >= a2; - var r4b3 = b3 >= a3; - var r4b4 = b4 >= a4; - var r4b5 = b5 >= a5; - var r4b6 = b6 >= a6; - - // operator == - var r5a1 = a1 == b1; - var r5a2 = a2 == b2; - var r5a3 = a3 == b3; - var r5a4 = a4 == b4; - var r5a5 = a5 == b5; - var r5a6 = a6 == b6; - - var r5b1 = b1 == a1; - var r5b2 = b2 == a2; - var r5b3 = b3 == a3; - var r5b4 = b4 == a4; - var r5b5 = b5 == a5; - var r5b6 = b6 == a6; - - // operator != - var r6a1 = a1 != b1; - var r6a2 = a2 != b2; - var r6a3 = a3 != b3; - var r6a4 = a4 != b4; - var r6a5 = a5 != b5; - var r6a6 = a6 != b6; - - var r6b1 = b1 != a1; - var r6b2 = b2 != a2; - var r6b3 = b3 != a3; - var r6b4 = b4 != a4; - var r6b5 = b5 != a5; - var r6b6 = b6 != a6; - - // operator === - var r7a1 = a1 === b1; - var r7a2 = a2 === b2; - var r7a3 = a3 === b3; - var r7a4 = a4 === b4; - var r7a5 = a5 === b5; - var r7a6 = a6 === b6; - - var r7b1 = b1 === a1; - var r7b2 = b2 === a2; - var r7b3 = b3 === a3; - var r7b4 = b4 === a4; - var r7b5 = b5 === a5; - var r7b6 = b6 === a6; - - // operator !== - var r8a1 = a1 !== b1; - var r8a2 = a2 !== b2; - var r8a3 = a3 !== b3; - var r8a4 = a4 !== b4; - var r8a5 = a5 !== b5; - var r8a6 = a6 !== b6; - - var r8b1 = b1 !== a1; - var r8b2 = b2 !== a2; - var r8b3 = b3 !== a3; - var r8b4 = b4 !== a4; - var r8b5 = b5 !== a5; - var r8b6 = b6 !== a6; \ No newline at end of file diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols new file mode 100644 index 00000000000..08b23dac50a --- /dev/null +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.symbols @@ -0,0 +1,587 @@ +=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts === +class Base { +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) + + public a: string; +>a : Symbol(a, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 12)) +} + +class Derived extends Base { +>Derived : Symbol(Derived, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 2, 1)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) + + public b: string; +>b : Symbol(b, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 4, 28)) +} + +class C { +>C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 6, 1)) + + public c: string; +>c : Symbol(c, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 8, 9)) +} + +var a1: { new (x: T): T }; +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 18)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 15)) + +var b1: { new (): string }; +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var a2: { new (x: T): T }; +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 18)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 15)) + +var b2: { new (x: string): number }; +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 15)) + +var a3: { new (x?: T): T }; +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 18)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 15)) + +var b3: { new (x?: string): number }; +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 15)) + +var a4: { new (...x: T[]): T }; +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 18)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 15)) + +var b4: { new (...x: string[]): number }; +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 15)) + +var a5: { new (x: T, y: T): T }; +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 18)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 15)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 23)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 15)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 15)) + +var b5: { new (x: string, y: number): string }; +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 15)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 25)) + +var a6: { new (x: T, y: U): T }; +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 15)) +>U : Symbol(U, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 17)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 15)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 31)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 15)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 36)) +>U : Symbol(U, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 17)) +>T : Symbol(T, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 15)) + +var b6: { new (x: Base, y: C): Base }; +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>x : Symbol(x, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 15)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) +>y : Symbol(y, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 23)) +>C : Symbol(C, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 6, 1)) +>Base : Symbol(Base, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 0, 0)) + +// operator < +var r1a1 = a1 < b1; +>r1a1 : Symbol(r1a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 31, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r1a2 = a2 < b2; +>r1a2 : Symbol(r1a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 32, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r1a3 = a3 < b3; +>r1a3 : Symbol(r1a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 33, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r1a4 = a4 < b4; +>r1a4 : Symbol(r1a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 34, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r1a5 = a5 < b5; +>r1a5 : Symbol(r1a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 35, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r1a6 = a6 < b6; +>r1a6 : Symbol(r1a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 36, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r1b1 = b1 < a1; +>r1b1 : Symbol(r1b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 38, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r1b2 = b2 < a2; +>r1b2 : Symbol(r1b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 39, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r1b3 = b3 < a3; +>r1b3 : Symbol(r1b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 40, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r1b4 = b4 < a4; +>r1b4 : Symbol(r1b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 41, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r1b5 = b5 < a5; +>r1b5 : Symbol(r1b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 42, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r1b6 = b6 < a6; +>r1b6 : Symbol(r1b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 43, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator > +var r2a1 = a1 > b1; +>r2a1 : Symbol(r2a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 46, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r2a2 = a2 > b2; +>r2a2 : Symbol(r2a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 47, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r2a3 = a3 > b3; +>r2a3 : Symbol(r2a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 48, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r2a4 = a4 > b4; +>r2a4 : Symbol(r2a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 49, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r2a5 = a5 > b5; +>r2a5 : Symbol(r2a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 50, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r2a6 = a6 > b6; +>r2a6 : Symbol(r2a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 51, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r2b1 = b1 > a1; +>r2b1 : Symbol(r2b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 53, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r2b2 = b2 > a2; +>r2b2 : Symbol(r2b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 54, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r2b3 = b3 > a3; +>r2b3 : Symbol(r2b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 55, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r2b4 = b4 > a4; +>r2b4 : Symbol(r2b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 56, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r2b5 = b5 > a5; +>r2b5 : Symbol(r2b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 57, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r2b6 = b6 > a6; +>r2b6 : Symbol(r2b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 58, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator <= +var r3a1 = a1 <= b1; +>r3a1 : Symbol(r3a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 61, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r3a2 = a2 <= b2; +>r3a2 : Symbol(r3a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 62, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r3a3 = a3 <= b3; +>r3a3 : Symbol(r3a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 63, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r3a4 = a4 <= b4; +>r3a4 : Symbol(r3a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 64, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r3a5 = a5 <= b5; +>r3a5 : Symbol(r3a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 65, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r3a6 = a6 <= b6; +>r3a6 : Symbol(r3a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 66, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r3b1 = b1 <= a1; +>r3b1 : Symbol(r3b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 68, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r3b2 = b2 <= a2; +>r3b2 : Symbol(r3b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 69, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r3b3 = b3 <= a3; +>r3b3 : Symbol(r3b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 70, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r3b4 = b4 <= a4; +>r3b4 : Symbol(r3b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 71, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r3b5 = b5 <= a5; +>r3b5 : Symbol(r3b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 72, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r3b6 = b6 <= a6; +>r3b6 : Symbol(r3b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 73, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator >= +var r4a1 = a1 >= b1; +>r4a1 : Symbol(r4a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 76, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r4a2 = a2 >= b2; +>r4a2 : Symbol(r4a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 77, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r4a3 = a3 >= b3; +>r4a3 : Symbol(r4a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 78, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r4a4 = a4 >= b4; +>r4a4 : Symbol(r4a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 79, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r4a5 = a5 >= b5; +>r4a5 : Symbol(r4a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 80, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r4a6 = a6 >= b6; +>r4a6 : Symbol(r4a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 81, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r4b1 = b1 >= a1; +>r4b1 : Symbol(r4b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 83, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r4b2 = b2 >= a2; +>r4b2 : Symbol(r4b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 84, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r4b3 = b3 >= a3; +>r4b3 : Symbol(r4b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 85, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r4b4 = b4 >= a4; +>r4b4 : Symbol(r4b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 86, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r4b5 = b5 >= a5; +>r4b5 : Symbol(r4b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 87, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r4b6 = b6 >= a6; +>r4b6 : Symbol(r4b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 88, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator == +var r5a1 = a1 == b1; +>r5a1 : Symbol(r5a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 91, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r5a2 = a2 == b2; +>r5a2 : Symbol(r5a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 92, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r5a3 = a3 == b3; +>r5a3 : Symbol(r5a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 93, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r5a4 = a4 == b4; +>r5a4 : Symbol(r5a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 94, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r5a5 = a5 == b5; +>r5a5 : Symbol(r5a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 95, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r5a6 = a6 == b6; +>r5a6 : Symbol(r5a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 96, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r5b1 = b1 == a1; +>r5b1 : Symbol(r5b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 98, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r5b2 = b2 == a2; +>r5b2 : Symbol(r5b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 99, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r5b3 = b3 == a3; +>r5b3 : Symbol(r5b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 100, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r5b4 = b4 == a4; +>r5b4 : Symbol(r5b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 101, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r5b5 = b5 == a5; +>r5b5 : Symbol(r5b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 102, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r5b6 = b6 == a6; +>r5b6 : Symbol(r5b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 103, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator != +var r6a1 = a1 != b1; +>r6a1 : Symbol(r6a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 106, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r6a2 = a2 != b2; +>r6a2 : Symbol(r6a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 107, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r6a3 = a3 != b3; +>r6a3 : Symbol(r6a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 108, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r6a4 = a4 != b4; +>r6a4 : Symbol(r6a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 109, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r6a5 = a5 != b5; +>r6a5 : Symbol(r6a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 110, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r6a6 = a6 != b6; +>r6a6 : Symbol(r6a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 111, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r6b1 = b1 != a1; +>r6b1 : Symbol(r6b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 113, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r6b2 = b2 != a2; +>r6b2 : Symbol(r6b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 114, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r6b3 = b3 != a3; +>r6b3 : Symbol(r6b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 115, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r6b4 = b4 != a4; +>r6b4 : Symbol(r6b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 116, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r6b5 = b5 != a5; +>r6b5 : Symbol(r6b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 117, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r6b6 = b6 != a6; +>r6b6 : Symbol(r6b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 118, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator === +var r7a1 = a1 === b1; +>r7a1 : Symbol(r7a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 121, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r7a2 = a2 === b2; +>r7a2 : Symbol(r7a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 122, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r7a3 = a3 === b3; +>r7a3 : Symbol(r7a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 123, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r7a4 = a4 === b4; +>r7a4 : Symbol(r7a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 124, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r7a5 = a5 === b5; +>r7a5 : Symbol(r7a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 125, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r7a6 = a6 === b6; +>r7a6 : Symbol(r7a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 126, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r7b1 = b1 === a1; +>r7b1 : Symbol(r7b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 128, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r7b2 = b2 === a2; +>r7b2 : Symbol(r7b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 129, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r7b3 = b3 === a3; +>r7b3 : Symbol(r7b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 130, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r7b4 = b4 === a4; +>r7b4 : Symbol(r7b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 131, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r7b5 = b5 === a5; +>r7b5 : Symbol(r7b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 132, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r7b6 = b6 === a6; +>r7b6 : Symbol(r7b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 133, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + +// operator !== +var r8a1 = a1 !== b1; +>r8a1 : Symbol(r8a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 136, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) + +var r8a2 = a2 !== b2; +>r8a2 : Symbol(r8a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 137, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) + +var r8a3 = a3 !== b3; +>r8a3 : Symbol(r8a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 138, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) + +var r8a4 = a4 !== b4; +>r8a4 : Symbol(r8a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 139, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) + +var r8a5 = a5 !== b5; +>r8a5 : Symbol(r8a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 140, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) + +var r8a6 = a6 !== b6; +>r8a6 : Symbol(r8a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 141, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) + +var r8b1 = b1 !== a1; +>r8b1 : Symbol(r8b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 143, 3)) +>b1 : Symbol(b1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 13, 3)) +>a1 : Symbol(a1, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 12, 3)) + +var r8b2 = b2 !== a2; +>r8b2 : Symbol(r8b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 144, 3)) +>b2 : Symbol(b2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 16, 3)) +>a2 : Symbol(a2, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 15, 3)) + +var r8b3 = b3 !== a3; +>r8b3 : Symbol(r8b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 145, 3)) +>b3 : Symbol(b3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 19, 3)) +>a3 : Symbol(a3, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 18, 3)) + +var r8b4 = b4 !== a4; +>r8b4 : Symbol(r8b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 146, 3)) +>b4 : Symbol(b4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 22, 3)) +>a4 : Symbol(a4, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 21, 3)) + +var r8b5 = b5 !== a5; +>r8b5 : Symbol(r8b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 147, 3)) +>b5 : Symbol(b5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 25, 3)) +>a5 : Symbol(a5, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 24, 3)) + +var r8b6 = b6 !== a6; +>r8b6 : Symbol(r8b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 148, 3)) +>b6 : Symbol(b6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 28, 3)) +>a6 : Symbol(a6, Decl(comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts, 27, 3)) + diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types new file mode 100644 index 00000000000..83cb4317459 --- /dev/null +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.types @@ -0,0 +1,683 @@ +=== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnInstantiatedConstructorSignature.ts === +class Base { +>Base : Base + + public a: string; +>a : string +} + +class Derived extends Base { +>Derived : Derived +>Base : Base + + public b: string; +>b : string +} + +class C { +>C : C + + public c: string; +>c : string +} + +var a1: { new (x: T): T }; +>a1 : new (x: T) => T +>T : T +>x : T +>T : T +>T : T + +var b1: { new (): string }; +>b1 : new () => string + +var a2: { new (x: T): T }; +>a2 : new (x: T) => T +>T : T +>x : T +>T : T +>T : T + +var b2: { new (x: string): number }; +>b2 : new (x: string) => number +>x : string + +var a3: { new (x?: T): T }; +>a3 : new (x?: T) => T +>T : T +>x : T +>T : T +>T : T + +var b3: { new (x?: string): number }; +>b3 : new (x?: string) => number +>x : string + +var a4: { new (...x: T[]): T }; +>a4 : new (...x: T[]) => T +>T : T +>x : T[] +>T : T +>T : T + +var b4: { new (...x: string[]): number }; +>b4 : new (...x: string[]) => number +>x : string[] + +var a5: { new (x: T, y: T): T }; +>a5 : new (x: T, y: T) => T +>T : T +>x : T +>T : T +>y : T +>T : T +>T : T + +var b5: { new (x: string, y: number): string }; +>b5 : new (x: string, y: number) => string +>x : string +>y : number + +var a6: { new (x: T, y: U): T }; +>a6 : new (x: T, y: U) => T +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + +var b6: { new (x: Base, y: C): Base }; +>b6 : new (x: Base, y: C) => Base +>x : Base +>Base : Base +>y : C +>C : C +>Base : Base + +// operator < +var r1a1 = a1 < b1; +>r1a1 : boolean +>a1 < b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r1a2 = a2 < b2; +>r1a2 : boolean +>a2 < b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r1a3 = a3 < b3; +>r1a3 : boolean +>a3 < b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r1a4 = a4 < b4; +>r1a4 : boolean +>a4 < b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r1a5 = a5 < b5; +>r1a5 : boolean +>a5 < b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r1a6 = a6 < b6; +>r1a6 : boolean +>a6 < b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r1b1 = b1 < a1; +>r1b1 : boolean +>b1 < a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r1b2 = b2 < a2; +>r1b2 : boolean +>b2 < a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r1b3 = b3 < a3; +>r1b3 : boolean +>b3 < a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r1b4 = b4 < a4; +>r1b4 : boolean +>b4 < a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r1b5 = b5 < a5; +>r1b5 : boolean +>b5 < a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r1b6 = b6 < a6; +>r1b6 : boolean +>b6 < a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator > +var r2a1 = a1 > b1; +>r2a1 : boolean +>a1 > b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r2a2 = a2 > b2; +>r2a2 : boolean +>a2 > b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r2a3 = a3 > b3; +>r2a3 : boolean +>a3 > b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r2a4 = a4 > b4; +>r2a4 : boolean +>a4 > b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r2a5 = a5 > b5; +>r2a5 : boolean +>a5 > b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r2a6 = a6 > b6; +>r2a6 : boolean +>a6 > b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r2b1 = b1 > a1; +>r2b1 : boolean +>b1 > a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r2b2 = b2 > a2; +>r2b2 : boolean +>b2 > a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r2b3 = b3 > a3; +>r2b3 : boolean +>b3 > a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r2b4 = b4 > a4; +>r2b4 : boolean +>b4 > a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r2b5 = b5 > a5; +>r2b5 : boolean +>b5 > a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r2b6 = b6 > a6; +>r2b6 : boolean +>b6 > a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator <= +var r3a1 = a1 <= b1; +>r3a1 : boolean +>a1 <= b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r3a2 = a2 <= b2; +>r3a2 : boolean +>a2 <= b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r3a3 = a3 <= b3; +>r3a3 : boolean +>a3 <= b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r3a4 = a4 <= b4; +>r3a4 : boolean +>a4 <= b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r3a5 = a5 <= b5; +>r3a5 : boolean +>a5 <= b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r3a6 = a6 <= b6; +>r3a6 : boolean +>a6 <= b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r3b1 = b1 <= a1; +>r3b1 : boolean +>b1 <= a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r3b2 = b2 <= a2; +>r3b2 : boolean +>b2 <= a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r3b3 = b3 <= a3; +>r3b3 : boolean +>b3 <= a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r3b4 = b4 <= a4; +>r3b4 : boolean +>b4 <= a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r3b5 = b5 <= a5; +>r3b5 : boolean +>b5 <= a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r3b6 = b6 <= a6; +>r3b6 : boolean +>b6 <= a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator >= +var r4a1 = a1 >= b1; +>r4a1 : boolean +>a1 >= b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r4a2 = a2 >= b2; +>r4a2 : boolean +>a2 >= b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r4a3 = a3 >= b3; +>r4a3 : boolean +>a3 >= b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r4a4 = a4 >= b4; +>r4a4 : boolean +>a4 >= b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r4a5 = a5 >= b5; +>r4a5 : boolean +>a5 >= b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r4a6 = a6 >= b6; +>r4a6 : boolean +>a6 >= b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r4b1 = b1 >= a1; +>r4b1 : boolean +>b1 >= a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r4b2 = b2 >= a2; +>r4b2 : boolean +>b2 >= a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r4b3 = b3 >= a3; +>r4b3 : boolean +>b3 >= a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r4b4 = b4 >= a4; +>r4b4 : boolean +>b4 >= a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r4b5 = b5 >= a5; +>r4b5 : boolean +>b5 >= a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r4b6 = b6 >= a6; +>r4b6 : boolean +>b6 >= a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator == +var r5a1 = a1 == b1; +>r5a1 : boolean +>a1 == b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r5a2 = a2 == b2; +>r5a2 : boolean +>a2 == b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r5a3 = a3 == b3; +>r5a3 : boolean +>a3 == b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r5a4 = a4 == b4; +>r5a4 : boolean +>a4 == b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r5a5 = a5 == b5; +>r5a5 : boolean +>a5 == b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r5a6 = a6 == b6; +>r5a6 : boolean +>a6 == b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r5b1 = b1 == a1; +>r5b1 : boolean +>b1 == a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r5b2 = b2 == a2; +>r5b2 : boolean +>b2 == a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r5b3 = b3 == a3; +>r5b3 : boolean +>b3 == a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r5b4 = b4 == a4; +>r5b4 : boolean +>b4 == a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r5b5 = b5 == a5; +>r5b5 : boolean +>b5 == a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r5b6 = b6 == a6; +>r5b6 : boolean +>b6 == a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator != +var r6a1 = a1 != b1; +>r6a1 : boolean +>a1 != b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r6a2 = a2 != b2; +>r6a2 : boolean +>a2 != b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r6a3 = a3 != b3; +>r6a3 : boolean +>a3 != b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r6a4 = a4 != b4; +>r6a4 : boolean +>a4 != b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r6a5 = a5 != b5; +>r6a5 : boolean +>a5 != b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r6a6 = a6 != b6; +>r6a6 : boolean +>a6 != b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r6b1 = b1 != a1; +>r6b1 : boolean +>b1 != a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r6b2 = b2 != a2; +>r6b2 : boolean +>b2 != a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r6b3 = b3 != a3; +>r6b3 : boolean +>b3 != a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r6b4 = b4 != a4; +>r6b4 : boolean +>b4 != a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r6b5 = b5 != a5; +>r6b5 : boolean +>b5 != a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r6b6 = b6 != a6; +>r6b6 : boolean +>b6 != a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator === +var r7a1 = a1 === b1; +>r7a1 : boolean +>a1 === b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r7a2 = a2 === b2; +>r7a2 : boolean +>a2 === b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r7a3 = a3 === b3; +>r7a3 : boolean +>a3 === b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r7a4 = a4 === b4; +>r7a4 : boolean +>a4 === b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r7a5 = a5 === b5; +>r7a5 : boolean +>a5 === b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r7a6 = a6 === b6; +>r7a6 : boolean +>a6 === b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r7b1 = b1 === a1; +>r7b1 : boolean +>b1 === a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r7b2 = b2 === a2; +>r7b2 : boolean +>b2 === a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r7b3 = b3 === a3; +>r7b3 : boolean +>b3 === a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r7b4 = b4 === a4; +>r7b4 : boolean +>b4 === a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r7b5 = b5 === a5; +>r7b5 : boolean +>b5 === a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r7b6 = b6 === a6; +>r7b6 : boolean +>b6 === a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + +// operator !== +var r8a1 = a1 !== b1; +>r8a1 : boolean +>a1 !== b1 : boolean +>a1 : new (x: T) => T +>b1 : new () => string + +var r8a2 = a2 !== b2; +>r8a2 : boolean +>a2 !== b2 : boolean +>a2 : new (x: T) => T +>b2 : new (x: string) => number + +var r8a3 = a3 !== b3; +>r8a3 : boolean +>a3 !== b3 : boolean +>a3 : new (x?: T) => T +>b3 : new (x?: string) => number + +var r8a4 = a4 !== b4; +>r8a4 : boolean +>a4 !== b4 : boolean +>a4 : new (...x: T[]) => T +>b4 : new (...x: string[]) => number + +var r8a5 = a5 !== b5; +>r8a5 : boolean +>a5 !== b5 : boolean +>a5 : new (x: T, y: T) => T +>b5 : new (x: string, y: number) => string + +var r8a6 = a6 !== b6; +>r8a6 : boolean +>a6 !== b6 : boolean +>a6 : new (x: T, y: U) => T +>b6 : new (x: Base, y: C) => Base + +var r8b1 = b1 !== a1; +>r8b1 : boolean +>b1 !== a1 : boolean +>b1 : new () => string +>a1 : new (x: T) => T + +var r8b2 = b2 !== a2; +>r8b2 : boolean +>b2 !== a2 : boolean +>b2 : new (x: string) => number +>a2 : new (x: T) => T + +var r8b3 = b3 !== a3; +>r8b3 : boolean +>b3 !== a3 : boolean +>b3 : new (x?: string) => number +>a3 : new (x?: T) => T + +var r8b4 = b4 !== a4; +>r8b4 : boolean +>b4 !== a4 : boolean +>b4 : new (...x: string[]) => number +>a4 : new (...x: T[]) => T + +var r8b5 = b5 !== a5; +>r8b5 : boolean +>b5 !== a5 : boolean +>b5 : new (x: string, y: number) => string +>a5 : new (x: T, y: T) => T + +var r8b6 = b6 !== a6; +>r8b6 : boolean +>b6 !== a6 : boolean +>b6 : new (x: Base, y: C) => Base +>a6 : new (x: T, y: U) => T + diff --git a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.errors.txt b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.errors.txt deleted file mode 100644 index 15293f3953a..00000000000 --- a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.errors.txt +++ /dev/null @@ -1,45 +0,0 @@ -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(5,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(8,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(10,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(13,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(21,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts(21,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts (6 errors) ==== - // used to be valid, now an error to do this - - interface IComparable { - } - function f>() { - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - interface I1> { // Error, any does not satisfy the constraint I1 - ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - interface I2 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - interface I4 T> { - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - // No error - interface I3 { - method1(); - } - - function foo(v: V) => void>() { - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - \ No newline at end of file diff --git a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols new file mode 100644 index 00000000000..ec987116a43 --- /dev/null +++ b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.symbols @@ -0,0 +1,60 @@ +=== tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts === +// used to be valid, now an error to do this + +interface IComparable { +>IComparable : Symbol(IComparable, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 0, 0)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 2, 22)) +} +function f>() { +>f : Symbol(f, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 3, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 4, 11)) +>I : Symbol(I, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 4, 13)) +>IComparable : Symbol(IComparable, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 0, 0)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 4, 11)) +} + +interface I1> { // Error, any does not satisfy the constraint I1 +>I1 : Symbol(I1, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 5, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 7, 13)) +>U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 7, 15)) +>I1 : Symbol(I1, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 5, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 7, 13)) +} +interface I2 { +>I2 : Symbol(I2, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 8, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 9, 13)) +>U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 9, 15)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 9, 13)) +} + +interface I4 T> { +>I4 : Symbol(I4, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 10, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 12, 13)) +>U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 12, 15)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 12, 13)) +} + +// No error +interface I3 { +>I3 : Symbol(I3, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 13, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 13)) +>U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 15)) + + method1(); +>method1 : Symbol(method1, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 35)) +>X : Symbol(X, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 17, 12)) +>Y : Symbol(Y, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 17, 14)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 16, 13)) +} + +function foo(v: V) => void>() { +>foo : Symbol(foo, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 18, 1)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 13)) +>U : Symbol(U, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 15)) +>V : Symbol(V, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 27)) +>T : Symbol(T, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 13)) +>v : Symbol(v, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 40)) +>V : Symbol(V, Decl(constraintReferencingTypeParameterFromSameTypeParameterList.ts, 20, 27)) +} + + diff --git a/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.types b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.types new file mode 100644 index 00000000000..f1303486283 --- /dev/null +++ b/tests/baselines/reference/constraintReferencingTypeParameterFromSameTypeParameterList.types @@ -0,0 +1,60 @@ +=== tests/cases/compiler/constraintReferencingTypeParameterFromSameTypeParameterList.ts === +// used to be valid, now an error to do this + +interface IComparable { +>IComparable : IComparable +>T : T +} +function f>() { +>f : >() => void +>T : T +>I : I +>IComparable : IComparable +>T : T +} + +interface I1> { // Error, any does not satisfy the constraint I1 +>I1 : I1 +>T : T +>U : U +>I1 : I1 +>T : T +} +interface I2 { +>I2 : I2 +>T : T +>U : U +>T : T +} + +interface I4 T> { +>I4 : I4 +>T : T +>U : U +>T : T +} + +// No error +interface I3 { +>I3 : I3 +>T : T +>U : U + + method1(); +>method1 : () => any +>X : X +>Y : Y +>T : T +} + +function foo(v: V) => void>() { +>foo : (v: V) => void>() => void +>T : T +>U : U +>V : V +>T : T +>v : V +>V : V +} + + diff --git a/tests/baselines/reference/constraintSatisfactionWithAny2.errors.txt b/tests/baselines/reference/constraintSatisfactionWithAny2.errors.txt deleted file mode 100644 index b297d2be970..00000000000 --- a/tests/baselines/reference/constraintSatisfactionWithAny2.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeArgumentLists/constraintSatisfactionWithAny2.ts(4,25): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeArgumentLists/constraintSatisfactionWithAny2.ts (1 errors) ==== - // errors expected for type parameter cannot be referenced in the constraints of the same list - // any is not a valid type argument unless there is no constraint, or the constraint is any - - declare function foo(x: U) => Z>(y: T): Z; - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a: any; - - foo(a); - foo(a); \ No newline at end of file diff --git a/tests/baselines/reference/constraintSatisfactionWithAny2.symbols b/tests/baselines/reference/constraintSatisfactionWithAny2.symbols new file mode 100644 index 00000000000..25d389c5c4a --- /dev/null +++ b/tests/baselines/reference/constraintSatisfactionWithAny2.symbols @@ -0,0 +1,27 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/constraintSatisfactionWithAny2.ts === +// errors expected for type parameter cannot be referenced in the constraints of the same list +// any is not a valid type argument unless there is no constraint, or the constraint is any + +declare function foo(x: U) => Z>(y: T): Z; +>foo : Symbol(foo, Decl(constraintSatisfactionWithAny2.ts, 0, 0)) +>Z : Symbol(Z, Decl(constraintSatisfactionWithAny2.ts, 3, 21)) +>T : Symbol(T, Decl(constraintSatisfactionWithAny2.ts, 3, 23)) +>U : Symbol(U, Decl(constraintSatisfactionWithAny2.ts, 3, 35)) +>x : Symbol(x, Decl(constraintSatisfactionWithAny2.ts, 3, 38)) +>U : Symbol(U, Decl(constraintSatisfactionWithAny2.ts, 3, 35)) +>Z : Symbol(Z, Decl(constraintSatisfactionWithAny2.ts, 3, 21)) +>y : Symbol(y, Decl(constraintSatisfactionWithAny2.ts, 3, 50)) +>T : Symbol(T, Decl(constraintSatisfactionWithAny2.ts, 3, 23)) +>Z : Symbol(Z, Decl(constraintSatisfactionWithAny2.ts, 3, 21)) + +var a: any; +>a : Symbol(a, Decl(constraintSatisfactionWithAny2.ts, 4, 3)) + +foo(a); +>foo : Symbol(foo, Decl(constraintSatisfactionWithAny2.ts, 0, 0)) +>a : Symbol(a, Decl(constraintSatisfactionWithAny2.ts, 4, 3)) + +foo(a); +>foo : Symbol(foo, Decl(constraintSatisfactionWithAny2.ts, 0, 0)) +>a : Symbol(a, Decl(constraintSatisfactionWithAny2.ts, 4, 3)) + diff --git a/tests/baselines/reference/constraintSatisfactionWithAny2.types b/tests/baselines/reference/constraintSatisfactionWithAny2.types new file mode 100644 index 00000000000..e40e00c5161 --- /dev/null +++ b/tests/baselines/reference/constraintSatisfactionWithAny2.types @@ -0,0 +1,29 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/constraintSatisfactionWithAny2.ts === +// errors expected for type parameter cannot be referenced in the constraints of the same list +// any is not a valid type argument unless there is no constraint, or the constraint is any + +declare function foo(x: U) => Z>(y: T): Z; +>foo : (x: U) => Z>(y: T) => Z +>Z : Z +>T : T +>U : U +>x : U +>U : U +>Z : Z +>y : T +>T : T +>Z : Z + +var a: any; +>a : any + +foo(a); +>foo(a) : {} +>foo : (x: U) => Z>(y: T) => Z +>a : any + +foo(a); +>foo(a) : any +>foo : (x: U) => Z>(y: T) => Z +>a : any + diff --git a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.errors.txt b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.errors.txt deleted file mode 100644 index b7375989e6b..00000000000 --- a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -tests/cases/compiler/constraintsThatReferenceOtherContstraints1.ts(3,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/constraintsThatReferenceOtherContstraints1.ts(4,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/constraintsThatReferenceOtherContstraints1.ts (2 errors) ==== - interface Object { } - - class Foo { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class Bar { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - data: Foo; // Error 1 Type 'Object' does not satisfy the constraint 'T' for type parameter 'U extends T'. - } - - var x: Foo< { a: string }, { a: string; b: number }>; // Error 2 Type '{ a: string; b: number; }' does not satisfy the constraint 'T' for type - \ No newline at end of file diff --git a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols new file mode 100644 index 00000000000..fa754b23dea --- /dev/null +++ b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.symbols @@ -0,0 +1,31 @@ +=== tests/cases/compiler/constraintsThatReferenceOtherContstraints1.ts === +interface Object { } +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) + +class Foo { } +>Foo : Symbol(Foo, Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 20)) +>T : Symbol(T, Decl(constraintsThatReferenceOtherContstraints1.ts, 2, 10)) +>U : Symbol(U, Decl(constraintsThatReferenceOtherContstraints1.ts, 2, 12)) +>T : Symbol(T, Decl(constraintsThatReferenceOtherContstraints1.ts, 2, 10)) + +class Bar { +>Bar : Symbol(Bar, Decl(constraintsThatReferenceOtherContstraints1.ts, 2, 29)) +>T : Symbol(T, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 10)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) +>U : Symbol(U, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 27)) +>T : Symbol(T, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 10)) + + data: Foo; // Error 1 Type 'Object' does not satisfy the constraint 'T' for type parameter 'U extends T'. +>data : Symbol(data, Decl(constraintsThatReferenceOtherContstraints1.ts, 3, 42)) +>Foo : Symbol(Foo, Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 20)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 0)) +} + +var x: Foo< { a: string }, { a: string; b: number }>; // Error 2 Type '{ a: string; b: number; }' does not satisfy the constraint 'T' for type +>x : Symbol(x, Decl(constraintsThatReferenceOtherContstraints1.ts, 7, 3)) +>Foo : Symbol(Foo, Decl(constraintsThatReferenceOtherContstraints1.ts, 0, 20)) +>a : Symbol(a, Decl(constraintsThatReferenceOtherContstraints1.ts, 7, 13)) +>a : Symbol(a, Decl(constraintsThatReferenceOtherContstraints1.ts, 7, 28)) +>b : Symbol(b, Decl(constraintsThatReferenceOtherContstraints1.ts, 7, 39)) + diff --git a/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.types b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.types new file mode 100644 index 00000000000..e3cd5dc51bc --- /dev/null +++ b/tests/baselines/reference/constraintsThatReferenceOtherContstraints1.types @@ -0,0 +1,31 @@ +=== tests/cases/compiler/constraintsThatReferenceOtherContstraints1.ts === +interface Object { } +>Object : Object + +class Foo { } +>Foo : Foo +>T : T +>U : U +>T : T + +class Bar { +>Bar : Bar +>T : T +>Object : Object +>U : U +>T : T + + data: Foo; // Error 1 Type 'Object' does not satisfy the constraint 'T' for type parameter 'U extends T'. +>data : Foo +>Foo : Foo +>Object : Object +>Object : Object +} + +var x: Foo< { a: string }, { a: string; b: number }>; // Error 2 Type '{ a: string; b: number; }' does not satisfy the constraint 'T' for type +>x : Foo<{ a: string; }, { a: string; b: number; }> +>Foo : Foo +>a : string +>a : string +>b : number + diff --git a/tests/baselines/reference/contextuallyTypingOrOperator3.errors.txt b/tests/baselines/reference/contextuallyTypingOrOperator3.errors.txt deleted file mode 100644 index ca7385b9c29..00000000000 --- a/tests/baselines/reference/contextuallyTypingOrOperator3.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/compiler/contextuallyTypingOrOperator3.ts(1,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/contextuallyTypingOrOperator3.ts (1 errors) ==== - function foo(u: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var x3: U = u || u; - } \ No newline at end of file diff --git a/tests/baselines/reference/contextuallyTypingOrOperator3.symbols b/tests/baselines/reference/contextuallyTypingOrOperator3.symbols new file mode 100644 index 00000000000..2f8ffb6234c --- /dev/null +++ b/tests/baselines/reference/contextuallyTypingOrOperator3.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/contextuallyTypingOrOperator3.ts === +function foo(u: U) { +>foo : Symbol(foo, Decl(contextuallyTypingOrOperator3.ts, 0, 0)) +>T : Symbol(T, Decl(contextuallyTypingOrOperator3.ts, 0, 13)) +>U : Symbol(U, Decl(contextuallyTypingOrOperator3.ts, 0, 15)) +>T : Symbol(T, Decl(contextuallyTypingOrOperator3.ts, 0, 13)) +>u : Symbol(u, Decl(contextuallyTypingOrOperator3.ts, 0, 29)) +>U : Symbol(U, Decl(contextuallyTypingOrOperator3.ts, 0, 15)) + + var x3: U = u || u; +>x3 : Symbol(x3, Decl(contextuallyTypingOrOperator3.ts, 1, 7)) +>U : Symbol(U, Decl(contextuallyTypingOrOperator3.ts, 0, 15)) +>u : Symbol(u, Decl(contextuallyTypingOrOperator3.ts, 0, 29)) +>u : Symbol(u, Decl(contextuallyTypingOrOperator3.ts, 0, 29)) +} diff --git a/tests/baselines/reference/contextuallyTypingOrOperator3.types b/tests/baselines/reference/contextuallyTypingOrOperator3.types new file mode 100644 index 00000000000..f6ccbbf9ab1 --- /dev/null +++ b/tests/baselines/reference/contextuallyTypingOrOperator3.types @@ -0,0 +1,16 @@ +=== tests/cases/compiler/contextuallyTypingOrOperator3.ts === +function foo(u: U) { +>foo : (u: U) => void +>T : T +>U : U +>T : T +>u : U +>U : U + + var x3: U = u || u; +>x3 : U +>U : U +>u || u : U +>u : U +>u : U +} diff --git a/tests/baselines/reference/enumAssignability.errors.txt b/tests/baselines/reference/enumAssignability.errors.txt index 4a060ac3456..1316727076f 100644 --- a/tests/baselines/reference/enumAssignability.errors.txt +++ b/tests/baselines/reference/enumAssignability.errors.txt @@ -20,7 +20,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(43,9): error TS2322: Type 'E' is not assignable to type '(x: T) => T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(45,9): error TS2322: Type 'E' is not assignable to type 'String'. Property 'charAt' is missing in type 'Number'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(47,21): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(48,9): error TS2322: Type 'E' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(49,9): error TS2322: Type 'E' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(50,9): error TS2322: Type 'E' is not assignable to type 'V'. @@ -28,7 +27,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(52,13): error TS2322: Type 'E' is not assignable to type 'B'. -==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts (21 errors) ==== +==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts (20 errors) ==== // enums assignable to number, any, Object, errors unless otherwise noted enum E { A } @@ -113,8 +112,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi !!! error TS2322: Property 'charAt' is missing in type 'Number'. function foo(x: T, y: U, z: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. x = e; ~ !!! error TS2322: Type 'E' is not assignable to type 'T'. diff --git a/tests/baselines/reference/enumIsNotASubtypeOfAnythingButNumber.errors.txt b/tests/baselines/reference/enumIsNotASubtypeOfAnythingButNumber.errors.txt index e5c341b34df..1f8def801cc 100644 --- a/tests/baselines/reference/enumIsNotASubtypeOfAnythingButNumber.errors.txt +++ b/tests/baselines/reference/enumIsNotASubtypeOfAnythingButNumber.errors.txt @@ -13,11 +13,10 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotA tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts(95,5): error TS2411: Property 'foo' of type 'E' is not assignable to string index type 'typeof f'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts(105,5): error TS2411: Property 'foo' of type 'E' is not assignable to string index type 'typeof c'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts(111,5): error TS2411: Property 'foo' of type 'E' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts(115,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts(117,5): error TS2411: Property 'foo' of type 'E' is not assignable to string index type 'U'. -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts (17 errors) ==== +==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotASubtypeOfAnythingButNumber.ts (16 errors) ==== // enums are only subtypes of number, any and no other types enum E { A } @@ -163,8 +162,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/enumIsNotA interface I18 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: E; ~~~~~~~ diff --git a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt index 871368da9fe..c7f51b2bd99 100644 --- a/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt +++ b/tests/baselines/reference/functionConstraintSatisfaction2.errors.txt @@ -12,13 +12,14 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(29,16): error TS2345: Argument of type 'typeof C2' is not assignable to parameter of type '(x: string) => string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(30,16): error TS2345: Argument of type 'new (x: T) => T' is not assignable to parameter of type '(x: string) => string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(34,16): error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. -tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(36,38): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(37,10): error TS2345: Argument of type 'T' is not assignable to parameter of type '(x: string) => string'. Type '() => void' is not assignable to type '(x: string) => string'. tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts(38,10): error TS2345: Argument of type 'U' is not assignable to parameter of type '(x: string) => string'. + Type 'T' is not assignable to type '(x: string) => string'. + Type '() => void' is not assignable to type '(x: string) => string'. -==== tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts (14 errors) ==== +==== tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstraintSatisfaction2.ts (13 errors) ==== // satisfaction of a constraint to Function, all of these invocations are errors unless otherwise noted function foo(x: T): T { return x; } @@ -80,8 +81,6 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain !!! error TS2345: Argument of type 'F2' is not assignable to parameter of type '(x: string) => string'. function fff(x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. foo2(x); ~ !!! error TS2345: Argument of type 'T' is not assignable to parameter of type '(x: string) => string'. @@ -89,5 +88,7 @@ tests/cases/conformance/types/typeParameters/typeArgumentLists/functionConstrain foo2(y); ~ !!! error TS2345: Argument of type 'U' is not assignable to parameter of type '(x: string) => string'. +!!! error TS2345: Type 'T' is not assignable to type '(x: string) => string'. +!!! error TS2345: Type '() => void' is not assignable to type '(x: string) => string'. } \ No newline at end of file diff --git a/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt b/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt index a981d337093..cc10d4c782c 100644 --- a/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt +++ b/tests/baselines/reference/functionWithMultipleReturnStatements.errors.txt @@ -4,12 +4,9 @@ tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMulti tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(32,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(44,10): error TS2354: No best common type exists among return expressions. tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(49,10): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(57,10): error TS2354: No best common type exists among return expressions. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(57,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts(57,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts (9 errors) ==== +==== tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMultipleReturnStatements.ts (6 errors) ==== // return type of a function with multiple returns is the BCT of each return statement // it is an error if there is no single BCT, these are error cases @@ -79,12 +76,6 @@ tests/cases/conformance/types/typeRelationships/bestCommonType/functionWithMulti } function f8(x: T, y: U) { - ~~ -!!! error TS2354: No best common type exists among return expressions. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. if (true) { return x; } else { diff --git a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.errors.txt b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.errors.txt deleted file mode 100644 index 2ff34413595..00000000000 --- a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -tests/cases/compiler/genericAssignmentCompatOfFunctionSignatures1.ts(1,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/genericAssignmentCompatOfFunctionSignatures1.ts(2,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/genericAssignmentCompatOfFunctionSignatures1.ts (2 errors) ==== - var x1 = function foo3(x: T, z: U) { } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var x2 = function foo3(x: T, z: U) { } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - x1 = x2; - x2 = x1; \ No newline at end of file diff --git a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.symbols b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.symbols new file mode 100644 index 00000000000..1dfb699d3b4 --- /dev/null +++ b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.symbols @@ -0,0 +1,35 @@ +=== tests/cases/compiler/genericAssignmentCompatOfFunctionSignatures1.ts === +var x1 = function foo3(x: T, z: U) { } +>x1 : Symbol(x1, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 3)) +>foo3 : Symbol(foo3, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 8)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 23)) +>U : Symbol(U, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 25)) +>a : Symbol(a, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 37)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 23)) +>b : Symbol(b, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 43)) +>x : Symbol(x, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 57)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 23)) +>z : Symbol(z, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 62)) +>U : Symbol(U, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 25)) + +var x2 = function foo3(x: T, z: U) { } +>x2 : Symbol(x2, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 3)) +>foo3 : Symbol(foo3, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 8)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 23)) +>U : Symbol(U, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 25)) +>a : Symbol(a, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 37)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 23)) +>b : Symbol(b, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 43)) +>x : Symbol(x, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 57)) +>T : Symbol(T, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 23)) +>z : Symbol(z, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 62)) +>U : Symbol(U, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 25)) + +x1 = x2; +>x1 : Symbol(x1, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 3)) +>x2 : Symbol(x2, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 3)) + +x2 = x1; +>x2 : Symbol(x2, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 1, 3)) +>x1 : Symbol(x1, Decl(genericAssignmentCompatOfFunctionSignatures1.ts, 0, 3)) + diff --git a/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types new file mode 100644 index 00000000000..c5765a5adf4 --- /dev/null +++ b/tests/baselines/reference/genericAssignmentCompatOfFunctionSignatures1.types @@ -0,0 +1,39 @@ +=== tests/cases/compiler/genericAssignmentCompatOfFunctionSignatures1.ts === +var x1 = function foo3(x: T, z: U) { } +>x1 : (x: T, z: U) => void +>function foo3(x: T, z: U) { } : (x: T, z: U) => void +>foo3 : (x: T, z: U) => void +>T : T +>U : U +>a : T +>T : T +>b : string +>x : T +>T : T +>z : U +>U : U + +var x2 = function foo3(x: T, z: U) { } +>x2 : (x: T, z: U) => void +>function foo3(x: T, z: U) { } : (x: T, z: U) => void +>foo3 : (x: T, z: U) => void +>T : T +>U : U +>a : T +>T : T +>b : number +>x : T +>T : T +>z : U +>U : U + +x1 = x2; +>x1 = x2 : (x: T, z: U) => void +>x1 : (x: T, z: U) => void +>x2 : (x: T, z: U) => void + +x2 = x1; +>x2 = x1 : (x: T, z: U) => void +>x2 : (x: T, z: U) => void +>x1 : (x: T, z: U) => void + diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.errors.txt b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.errors.txt index d8228dd2243..6ac3c9e6703 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.errors.txt +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference2.errors.txt @@ -1,14 +1,11 @@ -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference2.ts(3,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference2.ts(11,26): error TS2345: Argument of type 'number' is not assignable to parameter of type 'Date'. Property 'toDateString' is missing in type 'Number'. -==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference2.ts (2 errors) ==== +==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithConstraintsTypeArgumentInference2.ts (1 errors) ==== // Generic call with parameters of T and U, U extends T, no parameter of type U function foo(t: T) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var u: U; return u; } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.errors.txt b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.errors.txt index 54455782cc2..6c2be7b10d1 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.errors.txt +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints3.errors.txt @@ -1,10 +1,9 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints3.ts(18,10): error TS2453: The type argument for type parameter 'T' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'Derived' is not a valid type argument because it is not a supertype of candidate 'Derived2'. Property 'y' is missing in type 'Derived2'. -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints3.ts(20,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints3.ts (2 errors) ==== +==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints3.ts (1 errors) ==== // Generic call with constraints infering type parameter from object member properties class Base { @@ -29,8 +28,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObj !!! error TS2453: Property 'y' is missing in type 'Derived2'. function f2(a: U) { - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var r: T; return r; } diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.errors.txt b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.errors.txt index 5f416bb8596..cc4eb418596 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.errors.txt +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints4.errors.txt @@ -1,9 +1,7 @@ -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints4.ts(12,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints4.ts(28,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints4.ts(30,24): error TS2345: Argument of type 'C' is not assignable to parameter of type 'T'. -==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints4.ts (3 errors) ==== +==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints4.ts (1 errors) ==== // Generic call with constraints infering type parameter from object member properties class C { @@ -16,8 +14,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObj } function foo(t: T, t2: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return (x: T) => t2; } @@ -34,8 +30,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObj var r9 = foo(() => { }, () => 1); function other() { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var r4 = foo(c, d); var r5 = foo(c, d); // error ~ diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.errors.txt b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.errors.txt index 887abfaff63..b2e69ce7505 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.errors.txt +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints5.errors.txt @@ -1,9 +1,7 @@ -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints5.ts(12,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints5.ts(21,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints5.ts(22,24): error TS2345: Argument of type 'C' is not assignable to parameter of type 'T'. -==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints5.ts (3 errors) ==== +==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndConstraints5.ts (1 errors) ==== // Generic call with constraints infering type parameter from object member properties class C { @@ -16,8 +14,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObj } function foo(t: T, t2: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return (x: T) => t2; } @@ -27,8 +23,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObj var r9 = foo(() => 1, () => { }); // the constraints are self-referencing, no downstream error function other() { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var r5 = foo(c, d); // error ~ !!! error TS2345: Argument of type 'C' is not assignable to parameter of type 'T'. diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.errors.txt b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.errors.txt deleted file mode 100644 index b0c0bee94fd..00000000000 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.errors.txt +++ /dev/null @@ -1,33 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndIndexersErrors.ts(15,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndIndexersErrors.ts(23,9): error TS2322: Type 'T' is not assignable to type 'U'. - - -==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndIndexersErrors.ts (2 errors) ==== - // Type inference infers from indexers in target type, error cases - - function foo(x: T) { - return x; - } - - function other(arg: T) { - var b: { - [x: string]: Object; - [x: number]: T; // ok, T is a subtype of Object because its apparent type is {} - }; - var r2 = foo(b); // T - } - - function other3(arg: T) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b: { - [x: string]: Object; - [x: number]: T; - }; - var r2 = foo(b); - var d = r2[1]; - var e = r2['1']; - var u: U = r2[1]; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. - } \ No newline at end of file diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols new file mode 100644 index 00000000000..0f3fe58da01 --- /dev/null +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.symbols @@ -0,0 +1,76 @@ +=== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndIndexersErrors.ts === +// Type inference infers from indexers in target type, error cases + +function foo(x: T) { +>foo : Symbol(foo, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 0, 0)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 2, 13)) +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 2, 16)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 2, 13)) + + return x; +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 2, 16)) +} + +function other(arg: T) { +>other : Symbol(other, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 4, 1)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 6, 15)) +>arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 6, 18)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 6, 15)) + + var b: { +>b : Symbol(b, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 7, 7)) + + [x: string]: Object; +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 8, 9)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + [x: number]: T; // ok, T is a subtype of Object because its apparent type is {} +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 9, 9)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 6, 15)) + + }; + var r2 = foo(b); // T +>r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 11, 7)) +>foo : Symbol(foo, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 0, 0)) +>b : Symbol(b, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 7, 7)) +} + +function other3(arg: T) { +>other3 : Symbol(other3, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 12, 1)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 16)) +>U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 28)) +>U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 28)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>arg : Symbol(arg, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 45)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 16)) + + var b: { +>b : Symbol(b, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 15, 7)) + + [x: string]: Object; +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 16, 9)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + [x: number]: T; +>x : Symbol(x, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 17, 9)) +>T : Symbol(T, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 16)) + + }; + var r2 = foo(b); +>r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 19, 7)) +>foo : Symbol(foo, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 0, 0)) +>b : Symbol(b, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 15, 7)) + + var d = r2[1]; +>d : Symbol(d, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 20, 7)) +>r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 19, 7)) + + var e = r2['1']; +>e : Symbol(e, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 21, 7)) +>r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 19, 7)) + + var u: U = r2[1]; // ok +>u : Symbol(u, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 22, 7)) +>U : Symbol(U, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 14, 28)) +>r2 : Symbol(r2, Decl(genericCallWithObjectTypeArgsAndIndexersErrors.ts, 19, 7)) +} diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types new file mode 100644 index 00000000000..bde72409edc --- /dev/null +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndIndexersErrors.types @@ -0,0 +1,84 @@ +=== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithObjectTypeArgsAndIndexersErrors.ts === +// Type inference infers from indexers in target type, error cases + +function foo(x: T) { +>foo : (x: T) => T +>T : T +>x : T +>T : T + + return x; +>x : T +} + +function other(arg: T) { +>other : (arg: T) => void +>T : T +>arg : T +>T : T + + var b: { +>b : { [x: string]: Object; [x: number]: T; } + + [x: string]: Object; +>x : string +>Object : Object + + [x: number]: T; // ok, T is a subtype of Object because its apparent type is {} +>x : number +>T : T + + }; + var r2 = foo(b); // T +>r2 : { [x: string]: Object; [x: number]: T; } +>foo(b) : { [x: string]: Object; [x: number]: T; } +>foo : (x: T) => T +>b : { [x: string]: Object; [x: number]: T; } +} + +function other3(arg: T) { +>other3 : (arg: T) => void +>T : T +>U : U +>U : U +>Date : Date +>arg : T +>T : T + + var b: { +>b : { [x: string]: Object; [x: number]: T; } + + [x: string]: Object; +>x : string +>Object : Object + + [x: number]: T; +>x : number +>T : T + + }; + var r2 = foo(b); +>r2 : { [x: string]: Object; [x: number]: T; } +>foo(b) : { [x: string]: Object; [x: number]: T; } +>foo : (x: T) => T +>b : { [x: string]: Object; [x: number]: T; } + + var d = r2[1]; +>d : T +>r2[1] : T +>r2 : { [x: string]: Object; [x: number]: T; } +>1 : number + + var e = r2['1']; +>e : Object +>r2['1'] : Object +>r2 : { [x: string]: Object; [x: number]: T; } +>'1' : string + + var u: U = r2[1]; // ok +>u : U +>U : U +>r2[1] : T +>r2 : { [x: string]: Object; [x: number]: T; } +>1 : number +} diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.errors.txt b/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.errors.txt index e9fae450377..9795248e2f7 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.errors.txt +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndInitializers.errors.txt @@ -1,17 +1,10 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(5,33): error TS2322: Type 'number' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(6,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(6,37): error TS2322: Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(7,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(7,37): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(8,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(8,31): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(8,56): error TS2322: Type 'U' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(9,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(9,31): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts(9,50): error TS2322: Type 'V' is not assignable to type 'U'. + Type 'T' is not assignable to type 'V'. -==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts (11 errors) ==== +==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericCallWithObjectTypeArgsAndInitializers.ts (3 errors) ==== // Generic typed parameters with initializers function foo(x: T = null) { return x; } // ok @@ -20,26 +13,11 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/genericC ~~~~~~~~ !!! error TS2322: Type 'number' is not assignable to type 'T'. function foo4(x: T, y: U = x) { } // error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~~~~~ !!! error TS2322: Type 'T' is not assignable to type 'U'. function foo5(x: U, y: T = x) { } // ok - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. function foo6(x: T, y: U, z: V = y) { } // error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~~~~~ !!! error TS2322: Type 'U' is not assignable to type 'V'. - function foo7(x: V, y: U = x) { } // should be ok - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~ -!!! error TS2322: Type 'V' is not assignable to type 'U'. \ No newline at end of file +!!! error TS2322: Type 'T' is not assignable to type 'V'. + function foo7(x: V, y: U = x) { } // should be ok \ No newline at end of file diff --git a/tests/baselines/reference/genericConstraint2.errors.txt b/tests/baselines/reference/genericConstraint2.errors.txt index c1be6fc2325..97d468f5d5d 100644 --- a/tests/baselines/reference/genericConstraint2.errors.txt +++ b/tests/baselines/reference/genericConstraint2.errors.txt @@ -1,18 +1,15 @@ -tests/cases/compiler/genericConstraint2.ts(5,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/genericConstraint2.ts(11,7): error TS2420: Class 'ComparableString' incorrectly implements interface 'Comparable'. Property 'comparer' is missing in type 'ComparableString'. -tests/cases/compiler/genericConstraint2.ts(21,17): error TS2344: Type 'ComparableString' does not satisfy the constraint 'Comparable'. +tests/cases/compiler/genericConstraint2.ts(21,17): error TS2344: Type 'ComparableString' does not satisfy the constraint 'Comparable'. Property 'comparer' is missing in type 'ComparableString'. -==== tests/cases/compiler/genericConstraint2.ts (3 errors) ==== +==== tests/cases/compiler/genericConstraint2.ts (2 errors) ==== interface Comparable { comparer(other: T): number; } function compare>(x: T, y: T): number { - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. if (x == null) return y == null ? 0 : -1; if (y == null) return 1; return x.comparer(y); @@ -33,5 +30,5 @@ tests/cases/compiler/genericConstraint2.ts(21,17): error TS2344: Type 'Comparabl var b = new ComparableString("b"); var c = compare(a, b); ~~~~~~~~~~~~~~~~ -!!! error TS2344: Type 'ComparableString' does not satisfy the constraint 'Comparable'. +!!! error TS2344: Type 'ComparableString' does not satisfy the constraint 'Comparable'. !!! error TS2344: Property 'comparer' is missing in type 'ComparableString'. \ No newline at end of file diff --git a/tests/baselines/reference/genericConstraint3.errors.txt b/tests/baselines/reference/genericConstraint3.errors.txt deleted file mode 100644 index 525b11504fb..00000000000 --- a/tests/baselines/reference/genericConstraint3.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/compiler/genericConstraint3.ts(2,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/genericConstraint3.ts (1 errors) ==== - interface C

{ x: P; } - interface A> { x: U; } - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface B extends A<{}, { x: {} }> { } // Should not produce an error \ No newline at end of file diff --git a/tests/baselines/reference/genericConstraint3.symbols b/tests/baselines/reference/genericConstraint3.symbols new file mode 100644 index 00000000000..57cb9d03115 --- /dev/null +++ b/tests/baselines/reference/genericConstraint3.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/genericConstraint3.ts === +interface C

{ x: P; } +>C : Symbol(C, Decl(genericConstraint3.ts, 0, 0)) +>P : Symbol(P, Decl(genericConstraint3.ts, 0, 12)) +>x : Symbol(x, Decl(genericConstraint3.ts, 0, 16)) +>P : Symbol(P, Decl(genericConstraint3.ts, 0, 12)) + +interface A> { x: U; } +>A : Symbol(A, Decl(genericConstraint3.ts, 0, 24)) +>T : Symbol(T, Decl(genericConstraint3.ts, 1, 12)) +>U : Symbol(U, Decl(genericConstraint3.ts, 1, 14)) +>C : Symbol(C, Decl(genericConstraint3.ts, 0, 0)) +>T : Symbol(T, Decl(genericConstraint3.ts, 1, 12)) +>x : Symbol(x, Decl(genericConstraint3.ts, 1, 32)) +>U : Symbol(U, Decl(genericConstraint3.ts, 1, 14)) + +interface B extends A<{}, { x: {} }> { } // Should not produce an error +>B : Symbol(B, Decl(genericConstraint3.ts, 1, 40)) +>A : Symbol(A, Decl(genericConstraint3.ts, 0, 24)) +>x : Symbol(x, Decl(genericConstraint3.ts, 2, 27)) + diff --git a/tests/baselines/reference/genericConstraint3.types b/tests/baselines/reference/genericConstraint3.types new file mode 100644 index 00000000000..84d6f0676f5 --- /dev/null +++ b/tests/baselines/reference/genericConstraint3.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/genericConstraint3.ts === +interface C

{ x: P; } +>C : C

+>P : P +>x : P +>P : P + +interface A> { x: U; } +>A : A +>T : T +>U : U +>C : C

    97QcL?0pb)0wC{x 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

    YC9`dSBUxlFL~_(4o-y#s>kyw<@% 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

+>T : T +>x : U +>U : U + +interface B extends A<{}, { x: {} }> { } // Should not produce an error +>B : B +>A : A +>x : {} + diff --git a/tests/baselines/reference/genericMemberFunction.errors.txt b/tests/baselines/reference/genericMemberFunction.errors.txt index 2199966ea56..1410b6d94e3 100644 --- a/tests/baselines/reference/genericMemberFunction.errors.txt +++ b/tests/baselines/reference/genericMemberFunction.errors.txt @@ -1,45 +1,30 @@ -tests/cases/compiler/genericMemberFunction.ts(2,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/genericMemberFunction.ts(7,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/genericMemberFunction.ts(10,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/genericMemberFunction.ts(15,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/genericMemberFunction.ts(16,5): error TS2304: Cannot find name 'a'. tests/cases/compiler/genericMemberFunction.ts(17,5): error TS2304: Cannot find name 'removedFiles'. -tests/cases/compiler/genericMemberFunction.ts(17,30): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/genericMemberFunction.ts(18,12): error TS2339: Property 'removeFile' does not exist on type 'BuildResult'. -==== tests/cases/compiler/genericMemberFunction.ts (8 errors) ==== +==== tests/cases/compiler/genericMemberFunction.ts (3 errors) ==== export class BuildError{ public parent(): FileWithErrors { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return undefined; } } export class FileWithErrors{ public errors(): BuildError[] { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return undefined; } public parent(): BuildResult { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return undefined; } } export class BuildResult{ public merge(other: BuildResult): void { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. a.b.c.d.e.f.g = 0; ~ !!! error TS2304: Cannot find name 'a'. removedFiles.forEach((each: FileWithErrors) => { ~~~~~~~~~~~~ !!! error TS2304: Cannot find name 'removedFiles'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. this.removeFile(each); ~~~~~~~~~~ !!! error TS2339: Property 'removeFile' does not exist on type 'BuildResult'. diff --git a/tests/baselines/reference/genericMergedDeclarationUsingTypeParameter.errors.txt b/tests/baselines/reference/genericMergedDeclarationUsingTypeParameter.errors.txt index 43a73e76a3e..7778e1c3346 100644 --- a/tests/baselines/reference/genericMergedDeclarationUsingTypeParameter.errors.txt +++ b/tests/baselines/reference/genericMergedDeclarationUsingTypeParameter.errors.txt @@ -1,12 +1,9 @@ -tests/cases/compiler/genericMergedDeclarationUsingTypeParameter.ts(1,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/genericMergedDeclarationUsingTypeParameter.ts(3,19): error TS2304: Cannot find name 'T'. tests/cases/compiler/genericMergedDeclarationUsingTypeParameter.ts(4,14): error TS2304: Cannot find name 'T'. -==== tests/cases/compiler/genericMergedDeclarationUsingTypeParameter.ts (3 errors) ==== +==== tests/cases/compiler/genericMergedDeclarationUsingTypeParameter.ts (2 errors) ==== function foo(y: T, z: U) { return y; } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. module foo { export var x: T; ~ diff --git a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.errors.txt b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.errors.txt deleted file mode 100644 index 1778e092715..00000000000 --- a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughInstantiation2.ts(4,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughInstantiation2.ts (1 errors) ==== - // instantiating a derived type can cause an infinitely expanding type reference to be generated - // which could be used in an assignment check for constraint satisfaction - - interface AA> // now an error due to referencing type parameter in constraint - ~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - { - x: T - } - - interface BB extends AA> - { - } \ No newline at end of file diff --git a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols new file mode 100644 index 00000000000..0c5b0cf5a65 --- /dev/null +++ b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.symbols @@ -0,0 +1,22 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughInstantiation2.ts === +// instantiating a derived type can cause an infinitely expanding type reference to be generated +// which could be used in an assignment check for constraint satisfaction + +interface AA> // now an error due to referencing type parameter in constraint +>AA : Symbol(AA, Decl(infiniteExpansionThroughInstantiation2.ts, 0, 0)) +>T : Symbol(T, Decl(infiniteExpansionThroughInstantiation2.ts, 3, 13)) +>AA : Symbol(AA, Decl(infiniteExpansionThroughInstantiation2.ts, 0, 0)) +>T : Symbol(T, Decl(infiniteExpansionThroughInstantiation2.ts, 3, 13)) +{ + x: T +>x : Symbol(x, Decl(infiniteExpansionThroughInstantiation2.ts, 4, 1)) +>T : Symbol(T, Decl(infiniteExpansionThroughInstantiation2.ts, 3, 13)) +} + +interface BB extends AA> +>BB : Symbol(BB, Decl(infiniteExpansionThroughInstantiation2.ts, 6, 1)) +>AA : Symbol(AA, Decl(infiniteExpansionThroughInstantiation2.ts, 0, 0)) +>AA : Symbol(AA, Decl(infiniteExpansionThroughInstantiation2.ts, 0, 0)) +>BB : Symbol(BB, Decl(infiniteExpansionThroughInstantiation2.ts, 6, 1)) +{ +} diff --git a/tests/baselines/reference/infiniteExpansionThroughInstantiation2.types b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.types new file mode 100644 index 00000000000..c9249b90010 --- /dev/null +++ b/tests/baselines/reference/infiniteExpansionThroughInstantiation2.types @@ -0,0 +1,22 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/infiniteExpansionThroughInstantiation2.ts === +// instantiating a derived type can cause an infinitely expanding type reference to be generated +// which could be used in an assignment check for constraint satisfaction + +interface AA> // now an error due to referencing type parameter in constraint +>AA : AA +>T : T +>AA : AA +>T : T +{ + x: T +>x : T +>T : T +} + +interface BB extends AA> +>BB : BB +>AA : AA +>AA : AA +>BB : BB +{ +} diff --git a/tests/baselines/reference/instantiateConstraintsToTypeArguments2.errors.txt b/tests/baselines/reference/instantiateConstraintsToTypeArguments2.errors.txt deleted file mode 100644 index f5d53c582f6..00000000000 --- a/tests/baselines/reference/instantiateConstraintsToTypeArguments2.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts(1,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts(1,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts(2,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts(2,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts (4 errors) ==== - interface A, S extends A> { } - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface B, S extends B> extends A, B> { } - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. \ No newline at end of file diff --git a/tests/baselines/reference/instantiateConstraintsToTypeArguments2.symbols b/tests/baselines/reference/instantiateConstraintsToTypeArguments2.symbols new file mode 100644 index 00000000000..40c886e1b47 --- /dev/null +++ b/tests/baselines/reference/instantiateConstraintsToTypeArguments2.symbols @@ -0,0 +1,30 @@ +=== tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts === +interface A, S extends A> { } +>A : Symbol(A, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 12)) +>A : Symbol(A, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 30)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 30)) +>A : Symbol(A, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 30)) + +interface B, S extends B> extends A, B> { } +>B : Symbol(B, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 53)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 12)) +>B : Symbol(B, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 53)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 30)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 30)) +>B : Symbol(B, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 53)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 30)) +>A : Symbol(A, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 0)) +>B : Symbol(B, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 53)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 30)) +>B : Symbol(B, Decl(instantiateConstraintsToTypeArguments2.ts, 0, 53)) +>T : Symbol(T, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 12)) +>S : Symbol(S, Decl(instantiateConstraintsToTypeArguments2.ts, 1, 30)) + diff --git a/tests/baselines/reference/instantiateConstraintsToTypeArguments2.types b/tests/baselines/reference/instantiateConstraintsToTypeArguments2.types new file mode 100644 index 00000000000..1952a661c16 --- /dev/null +++ b/tests/baselines/reference/instantiateConstraintsToTypeArguments2.types @@ -0,0 +1,30 @@ +=== tests/cases/compiler/instantiateConstraintsToTypeArguments2.ts === +interface A, S extends A> { } +>A : A +>T : T +>A : A +>T : T +>S : S +>S : S +>A : A +>T : T +>S : S + +interface B, S extends B> extends A, B> { } +>B : B +>T : T +>B : B +>T : T +>S : S +>S : S +>B : B +>T : T +>S : S +>A : A +>B : B +>T : T +>S : S +>B : B +>T : T +>S : S + diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints.errors.txt b/tests/baselines/reference/instantiatedBaseTypeConstraints.errors.txt deleted file mode 100644 index db62abe5688..00000000000 --- a/tests/baselines/reference/instantiatedBaseTypeConstraints.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/compiler/instantiatedBaseTypeConstraints.ts(1,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/instantiatedBaseTypeConstraints.ts (1 errors) ==== - interface Foo, C> { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(bar: C): void; - } - - class Bar implements Foo { - foo(bar: string): void { - } - } - - - \ No newline at end of file diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols b/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols new file mode 100644 index 00000000000..e92097c309c --- /dev/null +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints.symbols @@ -0,0 +1,28 @@ +=== tests/cases/compiler/instantiatedBaseTypeConstraints.ts === +interface Foo, C> { +>Foo : Symbol(Foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 0)) +>T : Symbol(T, Decl(instantiatedBaseTypeConstraints.ts, 0, 14)) +>Foo : Symbol(Foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 0)) +>T : Symbol(T, Decl(instantiatedBaseTypeConstraints.ts, 0, 14)) +>C : Symbol(C, Decl(instantiatedBaseTypeConstraints.ts, 0, 34)) +>C : Symbol(C, Decl(instantiatedBaseTypeConstraints.ts, 0, 34)) + + foo(bar: C): void; +>foo : Symbol(foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 39)) +>bar : Symbol(bar, Decl(instantiatedBaseTypeConstraints.ts, 1, 6)) +>C : Symbol(C, Decl(instantiatedBaseTypeConstraints.ts, 0, 34)) +} + +class Bar implements Foo { +>Bar : Symbol(Bar, Decl(instantiatedBaseTypeConstraints.ts, 2, 1)) +>Foo : Symbol(Foo, Decl(instantiatedBaseTypeConstraints.ts, 0, 0)) +>Bar : Symbol(Bar, Decl(instantiatedBaseTypeConstraints.ts, 2, 1)) + + foo(bar: string): void { +>foo : Symbol(foo, Decl(instantiatedBaseTypeConstraints.ts, 4, 39)) +>bar : Symbol(bar, Decl(instantiatedBaseTypeConstraints.ts, 5, 6)) + } +} + + + diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints.types b/tests/baselines/reference/instantiatedBaseTypeConstraints.types new file mode 100644 index 00000000000..e83d8250158 --- /dev/null +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints.types @@ -0,0 +1,28 @@ +=== tests/cases/compiler/instantiatedBaseTypeConstraints.ts === +interface Foo, C> { +>Foo : Foo +>T : T +>Foo : Foo +>T : T +>C : C +>C : C + + foo(bar: C): void; +>foo : (bar: C) => void +>bar : C +>C : C +} + +class Bar implements Foo { +>Bar : Bar +>Foo : Foo +>Bar : Bar + + foo(bar: string): void { +>foo : (bar: string) => void +>bar : string + } +} + + + diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints2.errors.txt b/tests/baselines/reference/instantiatedBaseTypeConstraints2.errors.txt deleted file mode 100644 index d5c6d838a84..00000000000 --- a/tests/baselines/reference/instantiatedBaseTypeConstraints2.errors.txt +++ /dev/null @@ -1,11 +0,0 @@ -tests/cases/compiler/instantiatedBaseTypeConstraints2.ts(1,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/instantiatedBaseTypeConstraints2.ts(1,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/instantiatedBaseTypeConstraints2.ts (2 errors) ==== - interface A, S extends A> { } - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface B extends A, B> { } \ No newline at end of file diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints2.symbols b/tests/baselines/reference/instantiatedBaseTypeConstraints2.symbols new file mode 100644 index 00000000000..9122bbed975 --- /dev/null +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints2.symbols @@ -0,0 +1,21 @@ +=== tests/cases/compiler/instantiatedBaseTypeConstraints2.ts === +interface A, S extends A> { } +>A : Symbol(A, Decl(instantiatedBaseTypeConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiatedBaseTypeConstraints2.ts, 0, 12)) +>A : Symbol(A, Decl(instantiatedBaseTypeConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiatedBaseTypeConstraints2.ts, 0, 12)) +>S : Symbol(S, Decl(instantiatedBaseTypeConstraints2.ts, 0, 30)) +>S : Symbol(S, Decl(instantiatedBaseTypeConstraints2.ts, 0, 30)) +>A : Symbol(A, Decl(instantiatedBaseTypeConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(instantiatedBaseTypeConstraints2.ts, 0, 12)) +>S : Symbol(S, Decl(instantiatedBaseTypeConstraints2.ts, 0, 30)) + +interface B extends A, B> { } +>B : Symbol(B, Decl(instantiatedBaseTypeConstraints2.ts, 0, 53)) +>U : Symbol(U, Decl(instantiatedBaseTypeConstraints2.ts, 1, 12)) +>A : Symbol(A, Decl(instantiatedBaseTypeConstraints2.ts, 0, 0)) +>B : Symbol(B, Decl(instantiatedBaseTypeConstraints2.ts, 0, 53)) +>U : Symbol(U, Decl(instantiatedBaseTypeConstraints2.ts, 1, 12)) +>B : Symbol(B, Decl(instantiatedBaseTypeConstraints2.ts, 0, 53)) +>U : Symbol(U, Decl(instantiatedBaseTypeConstraints2.ts, 1, 12)) + diff --git a/tests/baselines/reference/instantiatedBaseTypeConstraints2.types b/tests/baselines/reference/instantiatedBaseTypeConstraints2.types new file mode 100644 index 00000000000..3b6ca2ea75b --- /dev/null +++ b/tests/baselines/reference/instantiatedBaseTypeConstraints2.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/instantiatedBaseTypeConstraints2.ts === +interface A, S extends A> { } +>A : A +>T : T +>A : A +>T : T +>S : S +>S : S +>A : A +>T : T +>S : S + +interface B extends A, B> { } +>B : B +>U : U +>A : A +>B : B +>U : U +>B : B +>U : U + diff --git a/tests/baselines/reference/interfaceWithMultipleDeclarations.errors.txt b/tests/baselines/reference/interfaceWithMultipleDeclarations.errors.txt index 9afd0d37733..e4b37db8a7a 100644 --- a/tests/baselines/reference/interfaceWithMultipleDeclarations.errors.txt +++ b/tests/baselines/reference/interfaceWithMultipleDeclarations.errors.txt @@ -1,9 +1,7 @@ tests/cases/compiler/interfaceWithMultipleDeclarations.ts(3,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(5,11): error TS2428: All declarations of an interface must have identical type parameters. -tests/cases/compiler/interfaceWithMultipleDeclarations.ts(5,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(7,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(9,11): error TS2428: All declarations of an interface must have identical type parameters. -tests/cases/compiler/interfaceWithMultipleDeclarations.ts(9,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(11,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(16,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(18,11): error TS2428: All declarations of an interface must have identical type parameters. @@ -11,11 +9,9 @@ tests/cases/compiler/interfaceWithMultipleDeclarations.ts(20,11): error TS2428: tests/cases/compiler/interfaceWithMultipleDeclarations.ts(22,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(24,11): error TS2428: All declarations of an interface must have identical type parameters. tests/cases/compiler/interfaceWithMultipleDeclarations.ts(29,11): error TS2428: All declarations of an interface must have identical type parameters. -tests/cases/compiler/interfaceWithMultipleDeclarations.ts(34,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/interfaceWithMultipleDeclarations.ts(36,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/compiler/interfaceWithMultipleDeclarations.ts (15 errors) ==== +==== tests/cases/compiler/interfaceWithMultipleDeclarations.ts (11 errors) ==== interface I1 { } interface I1 { // Name mismatch @@ -25,8 +21,6 @@ tests/cases/compiler/interfaceWithMultipleDeclarations.ts(36,14): error TS2313: interface I1 { // Length mismatch ~~ !!! error TS2428: All declarations of an interface must have identical type parameters. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } interface I1 { // constraint present ~~ @@ -35,8 +29,6 @@ tests/cases/compiler/interfaceWithMultipleDeclarations.ts(36,14): error TS2313: interface I1 { // Length mismatch ~~ !!! error TS2428: All declarations of an interface must have identical type parameters. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } interface I1 { // Length mismatch ~~ @@ -76,10 +68,6 @@ tests/cases/compiler/interfaceWithMultipleDeclarations.ts(36,14): error TS2313: class Foo { } interface I4> { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } interface I4> { // Should not be error - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } \ No newline at end of file diff --git a/tests/baselines/reference/invalidConstraint1.errors.txt b/tests/baselines/reference/invalidConstraint1.errors.txt index bac8f805c0f..e8a4ec43c09 100644 --- a/tests/baselines/reference/invalidConstraint1.errors.txt +++ b/tests/baselines/reference/invalidConstraint1.errors.txt @@ -1,12 +1,16 @@ -tests/cases/compiler/invalidConstraint1.ts(1,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/compiler/invalidConstraint1.ts(4,11): error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. + Types of property 'a' are incompatible. + Type 'number' is not assignable to type 'string'. ==== tests/cases/compiler/invalidConstraint1.ts (1 errors) ==== function f() { - ~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. return undefined; } f(); // should error + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. +!!! error TS2344: Types of property 'a' are incompatible. +!!! error TS2344: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/matchingOfObjectLiteralConstraints.errors.txt b/tests/baselines/reference/matchingOfObjectLiteralConstraints.errors.txt deleted file mode 100644 index edd917a4602..00000000000 --- a/tests/baselines/reference/matchingOfObjectLiteralConstraints.errors.txt +++ /dev/null @@ -1,10 +0,0 @@ -tests/cases/compiler/matchingOfObjectLiteralConstraints.ts(1,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/matchingOfObjectLiteralConstraints.ts (1 errors) ==== - function foo2(x: U, z: T) { } - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo2({ y: "foo" }, "foo"); - - \ No newline at end of file diff --git a/tests/baselines/reference/matchingOfObjectLiteralConstraints.symbols b/tests/baselines/reference/matchingOfObjectLiteralConstraints.symbols new file mode 100644 index 00000000000..8a7fb7b47fc --- /dev/null +++ b/tests/baselines/reference/matchingOfObjectLiteralConstraints.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/matchingOfObjectLiteralConstraints.ts === +function foo2(x: U, z: T) { } +>foo2 : Symbol(foo2, Decl(matchingOfObjectLiteralConstraints.ts, 0, 0)) +>T : Symbol(T, Decl(matchingOfObjectLiteralConstraints.ts, 0, 14)) +>U : Symbol(U, Decl(matchingOfObjectLiteralConstraints.ts, 0, 16)) +>y : Symbol(y, Decl(matchingOfObjectLiteralConstraints.ts, 0, 28)) +>T : Symbol(T, Decl(matchingOfObjectLiteralConstraints.ts, 0, 14)) +>x : Symbol(x, Decl(matchingOfObjectLiteralConstraints.ts, 0, 38)) +>U : Symbol(U, Decl(matchingOfObjectLiteralConstraints.ts, 0, 16)) +>z : Symbol(z, Decl(matchingOfObjectLiteralConstraints.ts, 0, 43)) +>T : Symbol(T, Decl(matchingOfObjectLiteralConstraints.ts, 0, 14)) + +foo2({ y: "foo" }, "foo"); +>foo2 : Symbol(foo2, Decl(matchingOfObjectLiteralConstraints.ts, 0, 0)) +>y : Symbol(y, Decl(matchingOfObjectLiteralConstraints.ts, 1, 6)) + + diff --git a/tests/baselines/reference/matchingOfObjectLiteralConstraints.types b/tests/baselines/reference/matchingOfObjectLiteralConstraints.types new file mode 100644 index 00000000000..f694571c727 --- /dev/null +++ b/tests/baselines/reference/matchingOfObjectLiteralConstraints.types @@ -0,0 +1,21 @@ +=== tests/cases/compiler/matchingOfObjectLiteralConstraints.ts === +function foo2(x: U, z: T) { } +>foo2 : (x: U, z: T) => void +>T : T +>U : U +>y : T +>T : T +>x : U +>U : U +>z : T +>T : T + +foo2({ y: "foo" }, "foo"); +>foo2({ y: "foo" }, "foo") : void +>foo2 : (x: U, z: T) => void +>{ y: "foo" } : { y: string; } +>y : string +>"foo" : string +>"foo" : string + + diff --git a/tests/baselines/reference/maxConstraints.errors.txt b/tests/baselines/reference/maxConstraints.errors.txt index 16ae5bd2063..1f8af2ffacd 100644 --- a/tests/baselines/reference/maxConstraints.errors.txt +++ b/tests/baselines/reference/maxConstraints.errors.txt @@ -1,16 +1,13 @@ -tests/cases/compiler/maxConstraints.ts(5,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/compiler/maxConstraints.ts(8,22): error TS2345: Argument of type 'number' is not assignable to parameter of type 'Comparable'. Property 'compareTo' is missing in type 'Number'. -==== tests/cases/compiler/maxConstraints.ts (2 errors) ==== +==== tests/cases/compiler/maxConstraints.ts (1 errors) ==== interface Comparable { compareTo(other: T): number; } interface Comparer { >(x: T, y: T): T; - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } var max2: Comparer = (x, y) => { return (x.compareTo(y) > 0) ? x : y }; var maxResult = max2(1, 2); diff --git a/tests/baselines/reference/objectTypeWithRecursiveWrappedPropertyCheckedNominally.errors.txt b/tests/baselines/reference/objectTypeWithRecursiveWrappedPropertyCheckedNominally.errors.txt index 1f2f432c9da..f112a590071 100644 --- a/tests/baselines/reference/objectTypeWithRecursiveWrappedPropertyCheckedNominally.errors.txt +++ b/tests/baselines/reference/objectTypeWithRecursiveWrappedPropertyCheckedNominally.errors.txt @@ -8,15 +8,11 @@ tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRec Type 'MyList' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(31,5): error TS2322: Type 'T' is not assignable to type 'U'. Type 'List' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(41,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(42,5): error TS2322: Type 'U' is not assignable to type 'T'. Type 'MyList' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(43,5): error TS2322: Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(48,5): error TS2322: Type 'T' is not assignable to type 'List'. -tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts(50,5): error TS2322: Type 'T' is not assignable to type 'MyList'. -==== tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts (9 errors) ==== +==== tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRecursiveWrappedPropertyCheckedNominally.ts (5 errors) ==== // Types with infinitely expanding recursive types are type checked nominally class List { @@ -72,25 +68,17 @@ tests/cases/conformance/types/typeRelationships/recursiveTypes/objectTypeWithRec } function foo2>(t: T, u: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. !!! error TS2322: Type 'MyList' is not assignable to type 'T'. u = t; // was error, ok after constraint made illegal, doesn't matter - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. var a: List; var b: MyList; a = t; // error - ~ -!!! error TS2322: Type 'T' is not assignable to type 'List'. a = u; // error b = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'MyList'. b = u; // ok } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.errors.txt b/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.errors.txt deleted file mode 100644 index dce23ed96e5..00000000000 --- a/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithComplexConstraints.ts(2,8): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithComplexConstraints.ts (1 errors) ==== - interface A { - (x: T, y: S): void - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - }>(x: T, y: T): void - ~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - interface B { - (x: U, y: U): void - } - - // ok, not considered identical because the steps of contextual signature instantiation create fresh type parameters - function foo(x: A); - function foo(x: B); // error after constraints above made illegal - function foo(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.symbols b/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.symbols new file mode 100644 index 00000000000..66314d9c5db --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.symbols @@ -0,0 +1,49 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithComplexConstraints.ts === +interface A { +>A : Symbol(A, Decl(objectTypesIdentityWithComplexConstraints.ts, 0, 0)) + + T : Symbol(T, Decl(objectTypesIdentityWithComplexConstraints.ts, 1, 7)) + + (x: T, y: S): void +>S : Symbol(S, Decl(objectTypesIdentityWithComplexConstraints.ts, 2, 13)) +>A : Symbol(A, Decl(objectTypesIdentityWithComplexConstraints.ts, 0, 0)) +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 2, 26)) +>T : Symbol(T, Decl(objectTypesIdentityWithComplexConstraints.ts, 1, 7)) +>y : Symbol(y, Decl(objectTypesIdentityWithComplexConstraints.ts, 2, 31)) +>S : Symbol(S, Decl(objectTypesIdentityWithComplexConstraints.ts, 2, 13)) + + }>(x: T, y: T): void +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 3, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithComplexConstraints.ts, 1, 7)) +>y : Symbol(y, Decl(objectTypesIdentityWithComplexConstraints.ts, 3, 14)) +>T : Symbol(T, Decl(objectTypesIdentityWithComplexConstraints.ts, 1, 7)) +} + +interface B { +>B : Symbol(B, Decl(objectTypesIdentityWithComplexConstraints.ts, 4, 1)) + + (x: U, y: U): void +>U : Symbol(U, Decl(objectTypesIdentityWithComplexConstraints.ts, 7, 7)) +>B : Symbol(B, Decl(objectTypesIdentityWithComplexConstraints.ts, 4, 1)) +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 7, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithComplexConstraints.ts, 7, 7)) +>y : Symbol(y, Decl(objectTypesIdentityWithComplexConstraints.ts, 7, 25)) +>U : Symbol(U, Decl(objectTypesIdentityWithComplexConstraints.ts, 7, 7)) +} + +// ok, not considered identical because the steps of contextual signature instantiation create fresh type parameters +function foo(x: A); +>foo : Symbol(foo, Decl(objectTypesIdentityWithComplexConstraints.ts, 8, 1), Decl(objectTypesIdentityWithComplexConstraints.ts, 11, 19), Decl(objectTypesIdentityWithComplexConstraints.ts, 12, 19)) +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 11, 13)) +>A : Symbol(A, Decl(objectTypesIdentityWithComplexConstraints.ts, 0, 0)) + +function foo(x: B); // error after constraints above made illegal +>foo : Symbol(foo, Decl(objectTypesIdentityWithComplexConstraints.ts, 8, 1), Decl(objectTypesIdentityWithComplexConstraints.ts, 11, 19), Decl(objectTypesIdentityWithComplexConstraints.ts, 12, 19)) +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 12, 13)) +>B : Symbol(B, Decl(objectTypesIdentityWithComplexConstraints.ts, 4, 1)) + +function foo(x: any) { } +>foo : Symbol(foo, Decl(objectTypesIdentityWithComplexConstraints.ts, 8, 1), Decl(objectTypesIdentityWithComplexConstraints.ts, 11, 19), Decl(objectTypesIdentityWithComplexConstraints.ts, 12, 19)) +>x : Symbol(x, Decl(objectTypesIdentityWithComplexConstraints.ts, 13, 13)) + diff --git a/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.types b/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.types new file mode 100644 index 00000000000..aeb1c467dce --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithComplexConstraints.types @@ -0,0 +1,49 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithComplexConstraints.ts === +interface A { +>A : A + + T : T + + (x: T, y: S): void +>S : S +>A : A +>x : T +>T : T +>y : S +>S : S + + }>(x: T, y: T): void +>x : T +>T : T +>y : T +>T : T +} + +interface B { +>B : B + + (x: U, y: U): void +>U : U +>B : B +>x : U +>U : U +>y : U +>U : U +} + +// ok, not considered identical because the steps of contextual signature instantiation create fresh type parameters +function foo(x: A); +>foo : { (x: A): any; (x: B): any; } +>x : A +>A : A + +function foo(x: B); // error after constraints above made illegal +>foo : { (x: A): any; (x: B): any; } +>x : B +>B : B + +function foo(x: any) { } +>foo : { (x: A): any; (x: B): any; } +>x : any + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.errors.txt b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.errors.txt deleted file mode 100644 index b1221bb21aa..00000000000 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.errors.txt +++ /dev/null @@ -1,141 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(6,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(9,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(13,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(17,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(21,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(26,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(29,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts(30,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts (8 errors) ==== - // Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those - // parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, - // optional or rest) and types, and identical return types. - - class A { - foo(x: T, y: U): string { return null; } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - class B> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - class D { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - interface I { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string; - } - - interface I2 { - foo(x: T, y: U): string; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - var a: { foo>(x: T, y: U): string } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b = { foo(x: T, y: U) { return ''; } }; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - function foo1(x: A); - function foo1(x: A); // error - function foo1(x: any) { } - - function foo1b(x: B, Array>); - function foo1b(x: B, Array>); // error - function foo1b(x: any) { } - - function foo1c(x: C); - function foo1c(x: C); // error - function foo1c(x: any) { } - - function foo2(x: I); - function foo2(x: I); // error - function foo2(x: any) { } - - function foo3(x: typeof a); - function foo3(x: typeof a); // error - function foo3(x: any) { } - - function foo4(x: typeof b); - function foo4(x: typeof b); // error - function foo4(x: any) { } - - function foo5(x: A); - function foo5(x: B, Array>); // ok - function foo5(x: any) { } - - function foo5b(x: A); - function foo5b(x: C); // ok - function foo5b(x: any) { } - - function foo5c(x: C); - function foo5c(x: D); // ok - function foo5c(x: any) { } - - function foo6c(x: C); - function foo6c(x: D); // error, "any" does not satisfy the constraint - function foo6c(x: any) { } - - function foo6(x: A); - function foo6(x: I); // ok - function foo6(x: any) { } - - function foo7(x: A); - function foo7(x: typeof a); // ok - function foo7(x: any) { } - - function foo8(x: B, Array>); - function foo8(x: I); // ok - function foo8(x: any) { } - - function foo9(x: B, Array>); - function foo9(x: C); // ok - function foo9(x: any) { } - - function foo10(x: B, Array>); - function foo10(x: typeof a); // ok - function foo10(x: any) { } - - function foo11(x: B, Array>); - function foo11(x: typeof b); // ok - function foo11(x: any) { } - - function foo12(x: I); - function foo12(x: C); // ok - function foo12(x: any) { } - - function foo12b(x: I2); - function foo12b(x: C); // ok - function foo12b(x: any) { } - - function foo13(x: I); - function foo13(x: typeof a); // ok - function foo13(x: any) { } - - function foo14(x: I); - function foo14(x: typeof b); // ok - function foo14(x: any) { } - - function foo15(x: I2); - function foo15(x: C); // ok - function foo15(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols new file mode 100644 index 00000000000..e8c34a1bf99 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.symbols @@ -0,0 +1,462 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class A { +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 4, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 20)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 37)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 42)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 5, 20)) +} + +class B> { +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 20)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 47)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 9, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 9, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 8, 20)) +} + +class C { +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 20)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 40)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 13, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 13, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 12, 20)) +} + +class D { +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 14, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 20)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 40)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 17, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 17, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 16, 20)) +} + +interface I { +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 12)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 24)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 24)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + foo(x: T, y: U): string; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 44)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 21, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 12)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 21, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 20, 24)) +} + +interface I2 { +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 22, 1)) + + foo(x: T, y: U): string; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 24, 14)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 20)) +>Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 40)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 45)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 25, 20)) +} + +var a: { foo>(x: T, y: U): string } +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 25)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 25)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 51)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 13)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 56)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 25)) + +var b = { foo(x: T, y: U) { return ''; } }; +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 3)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 26)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 26)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 45)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 14)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 50)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 26)) + +function foo1(x: A); +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 74), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 31, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 32, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 31, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo1(x: A); // error +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 74), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 31, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 32, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 32, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo1(x: any) { } +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 74), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 31, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 32, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 33, 14)) + +function foo1b(x: B, Array>); +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 33, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 35, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 36, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 35, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1b(x: B, Array>); // error +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 33, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 35, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 36, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 36, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1b(x: any) { } +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 33, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 35, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 36, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 15)) + +function foo1c(x: C); +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1c(x: C); // error +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1c(x: any) { } +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 37, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 39, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 40, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 15)) + +function foo2(x: I); +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo2(x: I); // error +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo2(x: any) { } +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 41, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 43, 36), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 44, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 45, 14)) + +function foo3(x: typeof a); +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 47, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 48, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 47, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) + +function foo3(x: typeof a); // error +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 47, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 48, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 48, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) + +function foo3(x: any) { } +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 47, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 48, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 49, 14)) + +function foo4(x: typeof b); +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 49, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 51, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 52, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 51, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 3)) + +function foo4(x: typeof b); // error +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 49, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 51, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 52, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 52, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 3)) + +function foo4(x: any) { } +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 49, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 51, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 52, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 53, 14)) + +function foo5(x: A); +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 55, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 56, 50)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 55, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo5(x: B, Array>); // ok +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 55, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 56, 50)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 56, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5(x: any) { } +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 53, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 55, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 56, 50)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 14)) + +function foo5b(x: A); +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 15)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo5b(x: C); // ok +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5b(x: any) { } +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 59, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 60, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 15)) + +function foo5c(x: C); +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5c(x: D); // ok +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5c(x: any) { } +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 61, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 63, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 64, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 15)) + +function foo6c(x: C); +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo6c(x: D); // error, "any" does not satisfy the constraint +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo6c(x: any) { } +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 67, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 68, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 15)) + +function foo6(x: A); +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo6(x: I); // ok +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo6(x: any) { } +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 71, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 72, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 73, 14)) + +function foo7(x: A); +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 73, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 75, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 76, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 75, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 0, 0)) + +function foo7(x: typeof a); // ok +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 73, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 75, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 76, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 76, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) + +function foo7(x: any) { } +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 73, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 75, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 76, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 14)) + +function foo8(x: B, Array>); +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo8(x: I); // ok +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo8(x: any) { } +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 77, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 79, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 80, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 14)) + +function foo9(x: B, Array>); +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo9(x: C); // ok +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 14)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo9(x: any) { } +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 81, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 83, 50), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 84, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 85, 14)) + +function foo10(x: B, Array>); +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 85, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 87, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 88, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 87, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo10(x: typeof a); // ok +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 85, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 87, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 88, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 88, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) + +function foo10(x: any) { } +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 85, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 87, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 88, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 89, 15)) + +function foo11(x: B, Array>); +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 89, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 91, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 92, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 91, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 6, 1)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo11(x: typeof b); // ok +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 89, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 91, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 92, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 92, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 3)) + +function foo11(x: any) { } +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 89, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 91, 51), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 92, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 15)) + +function foo12(x: I); +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12(x: C); // ok +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12(x: any) { } +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 93, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 95, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 96, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 15)) + +function foo12b(x: I2); +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 16)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 22, 1)) + +function foo12b(x: C); // ok +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 16)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12b(x: any) { } +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 97, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 99, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 100, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 16)) + +function foo13(x: I); +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo13(x: typeof a); // ok +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 28, 3)) + +function foo13(x: any) { } +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 101, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 103, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 104, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 15)) + +function foo14(x: I); +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 18, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo14(x: typeof b); // ok +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 29, 3)) + +function foo14(x: any) { } +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 105, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 107, 37), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 108, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 15)) + +function foo15(x: I2); +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 15)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 22, 1)) + +function foo15(x: C); // ok +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 10, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo15(x: any) { } +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 109, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 111, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 112, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts, 113, 15)) + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types new file mode 100644 index 00000000000..4974b0874eb --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.types @@ -0,0 +1,468 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints2.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class A { +>A : A + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>Date : Date +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class B> { +>B : B +>T : T +>U : U +>U : U +>Array : T[] + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class C { +>C : C +>T : T +>U : U +>U : U +>String : String + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class D { +>D : D +>T : T +>U : U +>U : U +>Number : Number + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +interface I { +>I : I +>T : T +>U : U +>U : U +>Number : Number + + foo(x: T, y: U): string; +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +} + +interface I2 { +>I2 : I2 + + foo(x: T, y: U): string; +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>Boolean : Boolean +>x : T +>T : T +>y : U +>U : U +} + +var a: { foo>(x: T, y: U): string } +>a : { foo(x: T, y: U): string; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>Array : T[] +>x : T +>T : T +>y : U +>U : U + +var b = { foo(x: T, y: U) { return ''; } }; +>b : { foo(x: T, y: U): string; } +>{ foo(x: T, y: U) { return ''; } } : { foo(x: T, y: U): string; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>RegExp : RegExp +>x : T +>T : T +>y : U +>U : U +>'' : string + +function foo1(x: A); +>foo1 : { (x: A): any; (x: A): any; } +>x : A +>A : A + +function foo1(x: A); // error +>foo1 : { (x: A): any; (x: A): any; } +>x : A +>A : A + +function foo1(x: any) { } +>foo1 : { (x: A): any; (x: A): any; } +>x : any + +function foo1b(x: B, Array>); +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo1b(x: B, Array>); // error +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo1b(x: any) { } +>foo1b : { (x: B): any; (x: B): any; } +>x : any + +function foo1c(x: C); +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo1c(x: C); // error +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo1c(x: any) { } +>foo1c : { (x: C): any; (x: C): any; } +>x : any + +function foo2(x: I); +>foo2 : { (x: I): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo2(x: I); // error +>foo2 : { (x: I): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo2(x: any) { } +>foo2 : { (x: I): any; (x: I): any; } +>x : any + +function foo3(x: typeof a); +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo3(x: typeof a); // error +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo3(x: any) { } +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo4(x: typeof b); +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo4(x: typeof b); // error +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo4(x: any) { } +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo5(x: A); +>foo5 : { (x: A): any; (x: B): any; } +>x : A +>A : A + +function foo5(x: B, Array>); // ok +>foo5 : { (x: A): any; (x: B): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo5(x: any) { } +>foo5 : { (x: A): any; (x: B): any; } +>x : any + +function foo5b(x: A); +>foo5b : { (x: A): any; (x: C): any; } +>x : A +>A : A + +function foo5b(x: C); // ok +>foo5b : { (x: A): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo5b(x: any) { } +>foo5b : { (x: A): any; (x: C): any; } +>x : any + +function foo5c(x: C); +>foo5c : { (x: C): any; (x: D): any; } +>x : C +>C : C +>String : String +>String : String + +function foo5c(x: D); // ok +>foo5c : { (x: C): any; (x: D): any; } +>x : D +>D : D +>Number : Number +>Number : Number + +function foo5c(x: any) { } +>foo5c : { (x: C): any; (x: D): any; } +>x : any + +function foo6c(x: C); +>foo6c : { (x: C): any; (x: D): any; } +>x : C +>C : C +>String : String +>String : String + +function foo6c(x: D); // error, "any" does not satisfy the constraint +>foo6c : { (x: C): any; (x: D): any; } +>x : D +>D : D +>Number : Number + +function foo6c(x: any) { } +>foo6c : { (x: C): any; (x: D): any; } +>x : any + +function foo6(x: A); +>foo6 : { (x: A): any; (x: I): any; } +>x : A +>A : A + +function foo6(x: I); // ok +>foo6 : { (x: A): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo6(x: any) { } +>foo6 : { (x: A): any; (x: I): any; } +>x : any + +function foo7(x: A); +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : A +>A : A + +function foo7(x: typeof a); // ok +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo7(x: any) { } +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo8(x: B, Array>); +>foo8 : { (x: B): any; (x: I): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo8(x: I); // ok +>foo8 : { (x: B): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo8(x: any) { } +>foo8 : { (x: B): any; (x: I): any; } +>x : any + +function foo9(x: B, Array>); +>foo9 : { (x: B): any; (x: C): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo9(x: C); // ok +>foo9 : { (x: B): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo9(x: any) { } +>foo9 : { (x: B): any; (x: C): any; } +>x : any + +function foo10(x: B, Array>); +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo10(x: typeof a); // ok +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo10(x: any) { } +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo11(x: B, Array>); +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo11(x: typeof b); // ok +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo11(x: any) { } +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo12(x: I); +>foo12 : { (x: I): any; (x: C): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo12(x: C); // ok +>foo12 : { (x: I): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo12(x: any) { } +>foo12 : { (x: I): any; (x: C): any; } +>x : any + +function foo12b(x: I2); +>foo12b : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo12b(x: C); // ok +>foo12b : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo12b(x: any) { } +>foo12b : { (x: I2): any; (x: C): any; } +>x : any + +function foo13(x: I); +>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo13(x: typeof a); // ok +>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo13(x: any) { } +>foo13 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo14(x: I); +>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo14(x: typeof b); // ok +>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo14(x: any) { } +>foo14 : { (x: I): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo15(x: I2); +>foo15 : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo15(x: C); // ok +>foo15 : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo15(x: any) { } +>foo15 : { (x: I2): any; (x: C): any; } +>x : any + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.errors.txt b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.errors.txt deleted file mode 100644 index 42e7f11e939..00000000000 --- a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.errors.txt +++ /dev/null @@ -1,150 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(15,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(18,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(22,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(26,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(30,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(35,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(38,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts(39,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts (8 errors) ==== - // Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those - // parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, - // optional or rest) and types, and identical return types. - - class One { foo: string } - class Two { foo: string } - interface Three { foo: string } - interface Four { foo: T } - interface Five extends Four { } - interface Six { - foo: T; - } - - class A { - foo(x: T, y: U): string { return null; } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - class B { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - class D> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string { return null; } - } - - interface I> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo(x: T, y: U): string; - } - - interface I2 { - foo>(x: T, y: U): string; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - var a: { foo(x: T, y: U): string } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b = { foo(x: T, y: U) { return ''; } }; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - function foo1(x: A); - function foo1(x: A); // error - function foo1(x: any) { } - - function foo1b(x: B); - function foo1b(x: B); // error - function foo1b(x: any) { } - - function foo1c(x: C); - function foo1c(x: C); // error - function foo1c(x: any) { } - - function foo2(x: I, Five>); - function foo2(x: I, Five>); // error - function foo2(x: any) { } - - function foo3(x: typeof a); - function foo3(x: typeof a); // error - function foo3(x: any) { } - - function foo4(x: typeof b); - function foo4(x: typeof b); // error - function foo4(x: any) { } - - function foo5(x: A); - function foo5(x: B); // ok - function foo5(x: any) { } - - function foo5b(x: A); - function foo5b(x: C); // ok - function foo5b(x: any) { } - - function foo5c(x: C); - function foo5c(x: D, Four>); // error - function foo5c(x: any) { } - - function foo6c(x: C); - function foo6c(x: D, Four>); // error - function foo6c(x: any) { } - - function foo6(x: A); - function foo6(x: I, Five>); // ok - function foo6(x: any) { } - - function foo7(x: A); - function foo7(x: typeof a); // error - function foo7(x: any) { } - - function foo8(x: B); - function foo8(x: I, Five>); // error - function foo8(x: any) { } - - function foo9(x: B); - function foo9(x: C); // error - function foo9(x: any) { } - - function foo10(x: B); - function foo10(x: typeof a); // ok - function foo10(x: any) { } - - function foo11(x: B); - function foo11(x: typeof b); // ok - function foo11(x: any) { } - - function foo12(x: I, Five>); - function foo12(x: C); // error - function foo12(x: any) { } - - function foo12b(x: I2); - function foo12b(x: C); // ok - function foo12b(x: any) { } - - function foo13(x: I, Five>); - function foo13(x: typeof a); // ok - function foo13(x: any) { } - - function foo14(x: I, Five>); - function foo14(x: typeof b); // ok - function foo14(x: any) { } - - function foo15(x: I2); - function foo15(x: C); // ok - function foo15(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols new file mode 100644 index 00000000000..6bcbd98f225 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.symbols @@ -0,0 +1,497 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class One { foo: string } +>One : Symbol(One, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 0, 0)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 11)) + +class Two { foo: string } +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 11)) + +interface Three { foo: string } +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 17)) + +interface Four { foo: T } +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 15)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 19)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 15)) + +interface Five extends Four { } +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 8, 15)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 8, 15)) + +interface Six { +>Six : Symbol(Six, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 8, 37)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 16)) + + foo: T; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 21)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 9, 14)) +} + +class A { +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 13, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 20)) +>One : Symbol(One, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 0, 0)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 36)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 41)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 14, 20)) +} + +class B { +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 20)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 18, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 18, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 17, 20)) +} + +class C { +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 20)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 39)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 22, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 22, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 21, 20)) +} + +class D> { +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 23, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 20)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) + + foo(x: T, y: U): string { return null; } +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 46)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 26, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 26, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 25, 20)) +} + +interface I> { +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 12)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 24)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 24)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + + foo(x: T, y: U): string; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 50)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 30, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 12)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 30, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 29, 24)) +} + +interface I2 { +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 31, 1)) + + foo>(x: T, y: U): string; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 33, 14)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 20)) +>Six : Symbol(Six, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 8, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 52)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 57)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 34, 20)) +} + +var a: { foo(x: T, y: U): string } +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 25)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 25)) +>One : Symbol(One, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 0, 0)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 41)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 13)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 46)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 25)) + +var b = { foo(x: T, y: U) { return ''; } }; +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 3)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 26)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 26)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 42)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 14)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 47)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 26)) + +function foo1(x: A); +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 71), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 40, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 41, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 40, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo1(x: A); // error +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 71), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 40, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 41, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 41, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo1(x: any) { } +>foo1 : Symbol(foo1, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 71), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 40, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 41, 20)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 42, 14)) + +function foo1b(x: B); +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 42, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 44, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 45, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 44, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo1b(x: B); // error +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 42, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 44, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 45, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 45, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo1b(x: any) { } +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 42, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 44, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 45, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 46, 15)) + +function foo1c(x: C); +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 46, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 48, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 49, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 48, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo1c(x: C); // error +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 46, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 48, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 49, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 49, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo1c(x: any) { } +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 46, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 48, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 49, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 50, 15)) + +function foo2(x: I, Five>); +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 50, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 52, 48), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 53, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 52, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo2(x: I, Five>); // error +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 50, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 52, 48), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 53, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 53, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo2(x: any) { } +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 50, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 52, 48), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 53, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 54, 14)) + +function foo3(x: typeof a); +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 56, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 57, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 56, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) + +function foo3(x: typeof a); // error +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 56, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 57, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 57, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) + +function foo3(x: any) { } +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 56, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 57, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 58, 14)) + +function foo4(x: typeof b); +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 58, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 60, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 61, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 60, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 3)) + +function foo4(x: typeof b); // error +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 58, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 60, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 61, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 61, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 3)) + +function foo4(x: any) { } +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 58, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 60, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 61, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 62, 14)) + +function foo5(x: A); +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 62, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 64, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 65, 30)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 64, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo5(x: B); // ok +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 62, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 64, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 65, 30)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 65, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo5(x: any) { } +>foo5 : Symbol(foo5, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 62, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 64, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 65, 30)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 66, 14)) + +function foo5b(x: A); +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 68, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 69, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 68, 15)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo5b(x: C); // ok +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 68, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 69, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 69, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo5b(x: any) { } +>foo5b : Symbol(foo5b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 68, 21), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 69, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 70, 15)) + +function foo5c(x: C); +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 70, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 72, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 73, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 72, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo5c(x: D, Four>); // error +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 70, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 72, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 73, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 73, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 23, 1)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) + +function foo5c(x: any) { } +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 70, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 72, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 73, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 74, 15)) + +function foo6c(x: C); +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 76, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 77, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 76, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo6c(x: D, Four>); // error +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 76, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 77, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 77, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 23, 1)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 6, 31)) + +function foo6c(x: any) { } +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 76, 35), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 77, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 78, 15)) + +function foo6(x: A); +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 80, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 81, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 80, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo6(x: I, Five>); // ok +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 80, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 81, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 81, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo6(x: any) { } +>foo6 : Symbol(foo6, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 80, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 81, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 82, 14)) + +function foo7(x: A); +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 82, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 84, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 85, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 84, 14)) +>A : Symbol(A, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 11, 1)) + +function foo7(x: typeof a); // error +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 82, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 84, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 85, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 85, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) + +function foo7(x: any) { } +>foo7 : Symbol(foo7, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 82, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 84, 20), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 85, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 86, 14)) + +function foo8(x: B); +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 86, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 88, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 89, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 88, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo8(x: I, Five>); // error +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 86, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 88, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 89, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 89, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo8(x: any) { } +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 86, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 88, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 89, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 90, 14)) + +function foo9(x: B); +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 90, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 92, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 93, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 92, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo9(x: C); // error +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 90, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 92, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 93, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 93, 14)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo9(x: any) { } +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 90, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 92, 30), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 93, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 94, 14)) + +function foo10(x: B); +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 94, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 96, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 97, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 96, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo10(x: typeof a); // ok +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 94, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 96, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 97, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 97, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) + +function foo10(x: any) { } +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 94, 25), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 96, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 97, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 98, 15)) + +function foo11(x: B); +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 98, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 100, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 101, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 100, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 15, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo11(x: typeof b); // ok +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 98, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 100, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 101, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 101, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 3)) + +function foo11(x: any) { } +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 98, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 100, 31), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 101, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 102, 15)) + +function foo12(x: I, Five>); +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 102, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 104, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 105, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 104, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo12(x: C); // error +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 102, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 104, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 105, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 105, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo12(x: any) { } +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 102, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 104, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 105, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 106, 15)) + +function foo12b(x: I2); +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 106, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 108, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 109, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 108, 16)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 31, 1)) + +function foo12b(x: C); // ok +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 106, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 108, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 109, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 109, 16)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo12b(x: any) { } +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 106, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 108, 23), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 109, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 110, 16)) + +function foo13(x: I, Five>); +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 110, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 112, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 113, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 112, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo13(x: typeof a); // ok +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 110, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 112, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 113, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 113, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 37, 3)) + +function foo13(x: any) { } +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 110, 27), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 112, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 113, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 114, 15)) + +function foo14(x: I, Five>); +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 114, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 116, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 117, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 116, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 27, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo14(x: typeof b); // ok +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 114, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 116, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 117, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 117, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 38, 3)) + +function foo14(x: any) { } +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 114, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 116, 49), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 117, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 118, 15)) + +function foo15(x: I2); +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 118, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 120, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 121, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 120, 15)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 31, 1)) + +function foo15(x: C); // ok +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 118, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 120, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 121, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 121, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 19, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo15(x: any) { } +>foo15 : Symbol(foo15, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 118, 26), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 120, 22), Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 121, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts, 122, 15)) + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types new file mode 100644 index 00000000000..b5c2f6bdef0 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.types @@ -0,0 +1,503 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericCallSignaturesDifferingByConstraints3.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class One { foo: string } +>One : One +>foo : string + +class Two { foo: string } +>Two : Two +>foo : string + +interface Three { foo: string } +>Three : Three +>foo : string + +interface Four { foo: T } +>Four : Four +>T : T +>foo : T +>T : T + +interface Five extends Four { } +>Five : Five +>T : T +>Four : Four +>T : T + +interface Six { +>Six : Six +>T : T +>U : U + + foo: T; +>foo : T +>T : T +} + +class A { +>A : A + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>One : One +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class B { +>B : B +>T : T +>U : U +>U : U +>Two : Two + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class C { +>C : C +>T : T +>U : U +>U : U +>Three : Three + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class D> { +>D : D +>T : T +>U : U +>U : U +>Four : Four + + foo(x: T, y: U): string { return null; } +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +>null : null +} + +interface I> { +>I : I +>T : T +>U : U +>U : U +>Five : Five + + foo(x: T, y: U): string; +>foo : (x: T, y: U) => string +>x : T +>T : T +>y : U +>U : U +} + +interface I2 { +>I2 : I2 + + foo>(x: T, y: U): string; +>foo : >(x: T, y: U) => string +>T : T +>U : U +>U : U +>Six : Six +>x : T +>T : T +>y : U +>U : U +} + +var a: { foo(x: T, y: U): string } +>a : { foo(x: T, y: U): string; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>One : One +>x : T +>T : T +>y : U +>U : U + +var b = { foo(x: T, y: U) { return ''; } }; +>b : { foo(x: T, y: U): string; } +>{ foo(x: T, y: U) { return ''; } } : { foo(x: T, y: U): string; } +>foo : (x: T, y: U) => string +>T : T +>U : U +>U : U +>Two : Two +>x : T +>T : T +>y : U +>U : U +>'' : string + +function foo1(x: A); +>foo1 : { (x: A): any; (x: A): any; } +>x : A +>A : A + +function foo1(x: A); // error +>foo1 : { (x: A): any; (x: A): any; } +>x : A +>A : A + +function foo1(x: any) { } +>foo1 : { (x: A): any; (x: A): any; } +>x : any + +function foo1b(x: B); +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo1b(x: B); // error +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo1b(x: any) { } +>foo1b : { (x: B): any; (x: B): any; } +>x : any + +function foo1c(x: C); +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo1c(x: C); // error +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo1c(x: any) { } +>foo1c : { (x: C): any; (x: C): any; } +>x : any + +function foo2(x: I, Five>); +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo2(x: I, Five>); // error +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo2(x: any) { } +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : any + +function foo3(x: typeof a); +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo3(x: typeof a); // error +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo3(x: any) { } +>foo3 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo4(x: typeof b); +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo4(x: typeof b); // error +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo4(x: any) { } +>foo4 : { (x: { foo(x: T, y: U): string; }): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo5(x: A); +>foo5 : { (x: A): any; (x: B): any; } +>x : A +>A : A + +function foo5(x: B); // ok +>foo5 : { (x: A): any; (x: B): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo5(x: any) { } +>foo5 : { (x: A): any; (x: B): any; } +>x : any + +function foo5b(x: A); +>foo5b : { (x: A): any; (x: C): any; } +>x : A +>A : A + +function foo5b(x: C); // ok +>foo5b : { (x: A): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo5b(x: any) { } +>foo5b : { (x: A): any; (x: C): any; } +>x : any + +function foo5c(x: C); +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo5c(x: D, Four>); // error +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : D, Four> +>D : D +>Four : Four +>Four : Four + +function foo5c(x: any) { } +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : any + +function foo6c(x: C); +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo6c(x: D, Four>); // error +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : D, Four> +>D : D +>Four : Four +>Four : Four + +function foo6c(x: any) { } +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : any + +function foo6(x: A); +>foo6 : { (x: A): any; (x: I, Five>): any; } +>x : A +>A : A + +function foo6(x: I, Five>); // ok +>foo6 : { (x: A): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo6(x: any) { } +>foo6 : { (x: A): any; (x: I, Five>): any; } +>x : any + +function foo7(x: A); +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : A +>A : A + +function foo7(x: typeof a); // error +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo7(x: any) { } +>foo7 : { (x: A): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo8(x: B); +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo8(x: I, Five>); // error +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo8(x: any) { } +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : any + +function foo9(x: B); +>foo9 : { (x: B): any; (x: C): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo9(x: C); // error +>foo9 : { (x: B): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo9(x: any) { } +>foo9 : { (x: B): any; (x: C): any; } +>x : any + +function foo10(x: B); +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo10(x: typeof a); // ok +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo10(x: any) { } +>foo10 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo11(x: B); +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo11(x: typeof b); // ok +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo11(x: any) { } +>foo11 : { (x: B): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo12(x: I, Five>); +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo12(x: C); // error +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo12(x: any) { } +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : any + +function foo12b(x: I2); +>foo12b : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo12b(x: C); // ok +>foo12b : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo12b(x: any) { } +>foo12b : { (x: I2): any; (x: C): any; } +>x : any + +function foo13(x: I, Five>); +>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo13(x: typeof a); // ok +>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>a : { foo(x: T, y: U): string; } + +function foo13(x: any) { } +>foo13 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo14(x: I, Five>); +>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo14(x: typeof b); // ok +>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : { foo(x: T, y: U): string; } +>b : { foo(x: T, y: U): string; } + +function foo14(x: any) { } +>foo14 : { (x: I, Five>): any; (x: { foo(x: T, y: U): string; }): any; } +>x : any + +function foo15(x: I2); +>foo15 : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo15(x: C); // ok +>foo15 : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo15(x: any) { } +>foo15 : { (x: I2): any; (x: C): any; } +>x : any + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.errors.txt b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.errors.txt deleted file mode 100644 index 536be73b5cc..00000000000 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.errors.txt +++ /dev/null @@ -1,110 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(5,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(9,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(13,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(17,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(22,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(25,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts(26,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts (7 errors) ==== - // Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those - // parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, - // optional or rest) and types, and identical return types. - - class B> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - class D { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - interface I { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - new(x: T, y: U): string; - } - - interface I2 { - new(x: T, y: U): string; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - var a: { new>(x: T, y: U): string } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - function foo1b(x: B, Array>); - function foo1b(x: B, Array>); // error - function foo1b(x: any) { } - - function foo1c(x: C); - function foo1c(x: C); // error - function foo1c(x: any) { } - - function foo2(x: I); - function foo2(x: I); // error - function foo2(x: any) { } - - function foo3(x: typeof a); - function foo3(x: typeof a); // error - function foo3(x: any) { } - - function foo4(x: typeof b); - function foo4(x: typeof b); // error - function foo4(x: any) { } - - function foo5c(x: C); - function foo5c(x: D); // ok - function foo5c(x: any) { } - - function foo6c(x: C); - function foo6c(x: D); // ok - function foo6c(x: any) { } - - function foo8(x: B, Array>); - function foo8(x: I); // ok - function foo8(x: any) { } - - function foo9(x: B, Array>); - function foo9(x: C); // error, types are structurally equal - function foo9(x: any) { } - - function foo10(x: B, Array>); - function foo10(x: typeof a); // ok - function foo10(x: any) { } - - function foo11(x: B, Array>); - function foo11(x: typeof b); // ok - function foo11(x: any) { } - - function foo12(x: I); - function foo12(x: C); // ok - function foo12(x: any) { } - - function foo12b(x: I2); - function foo12b(x: C); // ok - function foo12b(x: any) { } - - function foo13(x: I); - function foo13(x: typeof a); // ok - function foo13(x: any) { } - - function foo14(x: I); - function foo14(x: typeof b); // ok - function foo14(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols new file mode 100644 index 00000000000..ce55a114621 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.symbols @@ -0,0 +1,349 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class B> { +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 4, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 4, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 4, 20)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 5, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 4, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 5, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 4, 20)) +} + +class C { +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 20)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 9, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 9, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 8, 20)) +} + +class D { +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 10, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 20)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 13, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 13, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 12, 20)) +} + +interface I { +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 12)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 24)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 24)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + new(x: T, y: U): string; +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 17, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 12)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 17, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 16, 24)) +} + +interface I2 { +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 18, 1)) + + new(x: T, y: U): string; +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 20)) +>Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 40)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 45)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 21, 20)) +} + +var a: { new>(x: T, y: U): string } +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 3)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 25)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 25)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 51)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 13)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 56)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 25)) + +var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 3)) +>new : Symbol(new, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 26)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 26)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 45)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 14)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 50)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 26)) + +function foo1b(x: B, Array>); +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 74), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 27, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 28, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 27, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1b(x: B, Array>); // error +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 74), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 27, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 28, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 28, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1b(x: any) { } +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 74), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 27, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 28, 51)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 15)) + +function foo1c(x: C); +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1c(x: C); // error +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo1c(x: any) { } +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 29, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 31, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 32, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 15)) + +function foo2(x: I); +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo2(x: I); // error +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo2(x: any) { } +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 33, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 35, 36), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 36, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 37, 14)) + +function foo3(x: typeof a); +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 37, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 39, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 40, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 39, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 3)) + +function foo3(x: typeof a); // error +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 37, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 39, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 40, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 40, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 3)) + +function foo3(x: any) { } +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 37, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 39, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 40, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 41, 14)) + +function foo4(x: typeof b); +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 43, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 44, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 43, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 3)) + +function foo4(x: typeof b); // error +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 43, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 44, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 44, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 3)) + +function foo4(x: any) { } +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 41, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 43, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 44, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 14)) + +function foo5c(x: C); +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5c(x: D); // ok +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 10, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo5c(x: any) { } +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 45, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 47, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 48, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 15)) + +function foo6c(x: C); +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo6c(x: D); // ok +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 10, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo6c(x: any) { } +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 49, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 51, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 52, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 15)) + +function foo8(x: B, Array>); +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo8(x: I); // ok +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo8(x: any) { } +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 53, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 55, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 56, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 14)) + +function foo9(x: B, Array>); +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo9(x: C); // error, types are structurally equal +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 14)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo9(x: any) { } +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 57, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 59, 50), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 60, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 61, 14)) + +function foo10(x: B, Array>); +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 61, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 63, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 64, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 63, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo10(x: typeof a); // ok +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 61, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 63, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 64, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 64, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 3)) + +function foo10(x: any) { } +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 61, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 63, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 64, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 65, 15)) + +function foo11(x: B, Array>); +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 67, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 68, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 67, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 0, 0)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo11(x: typeof b); // ok +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 67, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 68, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 68, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 3)) + +function foo11(x: any) { } +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 65, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 67, 51), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 68, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 15)) + +function foo12(x: I); +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12(x: C); // ok +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12(x: any) { } +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 69, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 71, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 72, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 15)) + +function foo12b(x: I2); +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 16)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 18, 1)) + +function foo12b(x: C); // ok +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 16)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 6, 1)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo12b(x: any) { } +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 73, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 75, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 76, 38)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 16)) + +function foo13(x: I); +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo13(x: typeof a); // ok +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 24, 3)) + +function foo13(x: any) { } +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 77, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 79, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 80, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 15)) + +function foo14(x: I); +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 14, 1)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function foo14(x: typeof b); // ok +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 25, 3)) + +function foo14(x: any) { } +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 81, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 83, 37), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 84, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts, 85, 15)) + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types new file mode 100644 index 00000000000..b1d1d79ac05 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.types @@ -0,0 +1,354 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints2.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class B> { +>B : B +>T : T +>U : U +>U : U +>Array : T[] + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class C { +>C : C +>T : T +>U : U +>U : U +>String : String + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class D { +>D : D +>T : T +>U : U +>U : U +>Number : Number + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +interface I { +>I : I +>T : T +>U : U +>U : U +>Number : Number + + new(x: T, y: U): string; +>x : T +>T : T +>y : U +>U : U +} + +interface I2 { +>I2 : I2 + + new(x: T, y: U): string; +>T : T +>U : U +>U : U +>Boolean : Boolean +>x : T +>T : T +>y : U +>U : U +} + +var a: { new>(x: T, y: U): string } +>a : new (x: T, y: U) => string +>T : T +>U : U +>U : U +>Array : T[] +>x : T +>T : T +>y : U +>U : U + +var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new +>b : { new(x: T, y: U): string; } +>{ new(x: T, y: U) { return ''; } } : { new(x: T, y: U): string; } +>new : (x: T, y: U) => string +>T : T +>U : U +>U : U +>RegExp : RegExp +>x : T +>T : T +>y : U +>U : U +>'' : string + +function foo1b(x: B, Array>); +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo1b(x: B, Array>); // error +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo1b(x: any) { } +>foo1b : { (x: B): any; (x: B): any; } +>x : any + +function foo1c(x: C); +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo1c(x: C); // error +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo1c(x: any) { } +>foo1c : { (x: C): any; (x: C): any; } +>x : any + +function foo2(x: I); +>foo2 : { (x: I): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo2(x: I); // error +>foo2 : { (x: I): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo2(x: any) { } +>foo2 : { (x: I): any; (x: I): any; } +>x : any + +function foo3(x: typeof a); +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo3(x: typeof a); // error +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo3(x: any) { } +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo4(x: typeof b); +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo4(x: typeof b); // error +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo4(x: any) { } +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + +function foo5c(x: C); +>foo5c : { (x: C): any; (x: D): any; } +>x : C +>C : C +>String : String +>String : String + +function foo5c(x: D); // ok +>foo5c : { (x: C): any; (x: D): any; } +>x : D +>D : D +>Number : Number +>Number : Number + +function foo5c(x: any) { } +>foo5c : { (x: C): any; (x: D): any; } +>x : any + +function foo6c(x: C); +>foo6c : { (x: C): any; (x: D): any; } +>x : C +>C : C +>String : String +>String : String + +function foo6c(x: D); // ok +>foo6c : { (x: C): any; (x: D): any; } +>x : D +>D : D +>Number : Number + +function foo6c(x: any) { } +>foo6c : { (x: C): any; (x: D): any; } +>x : any + +function foo8(x: B, Array>); +>foo8 : { (x: B): any; (x: I): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo8(x: I); // ok +>foo8 : { (x: B): any; (x: I): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo8(x: any) { } +>foo8 : { (x: B): any; (x: I): any; } +>x : any + +function foo9(x: B, Array>); +>foo9 : { (x: B): any; (x: C): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo9(x: C); // error, types are structurally equal +>foo9 : { (x: B): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo9(x: any) { } +>foo9 : { (x: B): any; (x: C): any; } +>x : any + +function foo10(x: B, Array>); +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo10(x: typeof a); // ok +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo10(x: any) { } +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo11(x: B, Array>); +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : B +>B : B +>Array : T[] +>Array : T[] + +function foo11(x: typeof b); // ok +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo11(x: any) { } +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + +function foo12(x: I); +>foo12 : { (x: I): any; (x: C): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo12(x: C); // ok +>foo12 : { (x: I): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo12(x: any) { } +>foo12 : { (x: I): any; (x: C): any; } +>x : any + +function foo12b(x: I2); +>foo12b : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo12b(x: C); // ok +>foo12b : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>String : String +>String : String + +function foo12b(x: any) { } +>foo12b : { (x: I2): any; (x: C): any; } +>x : any + +function foo13(x: I); +>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo13(x: typeof a); // ok +>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo13(x: any) { } +>foo13 : { (x: I): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo14(x: I); +>foo14 : { (x: I): any; (x: { new(x: T, y: U): string; }): any; } +>x : I +>I : I +>Number : Number +>Number : Number + +function foo14(x: typeof b); // ok +>foo14 : { (x: I): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo14(x: any) { } +>foo14 : { (x: I): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.errors.txt b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.errors.txt deleted file mode 100644 index 33a62356d1c..00000000000 --- a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.errors.txt +++ /dev/null @@ -1,119 +0,0 @@ -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(14,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(18,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(22,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(26,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(31,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(34,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts(35,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts (7 errors) ==== - // Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those - // parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, - // optional or rest) and types, and identical return types. - - class One { foo: string } - class Two { foo: string } - interface Three { foo: string } - interface Four { foo: T } - interface Five extends Four { } - interface Six { - foo: T; - } - - class B { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - class D> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T, y: U) { return null; } - } - - interface I> { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - new(x: T, y: U): string; - } - - interface I2 { - new>(x: T, y: U): string; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - - var a: { new(x: T, y: U): string } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - function foo1b(x: B); - function foo1b(x: B); // error - function foo1b(x: any) { } - - function foo1c(x: C); - function foo1c(x: C); // error - function foo1c(x: any) { } - - function foo2(x: I, Five>); - function foo2(x: I, Five>); // error - function foo2(x: any) { } - - function foo3(x: typeof a); - function foo3(x: typeof a); // error - function foo3(x: any) { } - - function foo4(x: typeof b); - function foo4(x: typeof b); // error - function foo4(x: any) { } - - function foo5c(x: C); - function foo5c(x: D, Four>); // error - function foo5c(x: any) { } - - function foo6c(x: C); - function foo6c(x: D, Four>); // error - function foo6c(x: any) { } - - function foo8(x: B); - function foo8(x: I, Five>); // error - function foo8(x: any) { } - - function foo9(x: B); - function foo9(x: C); // error - function foo9(x: any) { } - - function foo10(x: B); - function foo10(x: typeof a); // ok - function foo10(x: any) { } - - function foo11(x: B); - function foo11(x: typeof b); // ok - function foo11(x: any) { } - - function foo12(x: I, Five>); - function foo12(x: C); // ok - function foo12(x: any) { } - - function foo12b(x: I2); - function foo12b(x: C); // ok - function foo12b(x: any) { } - - function foo13(x: I, Five>); - function foo13(x: typeof a); // ok - function foo13(x: any) { } - - function foo14(x: I, Five>); - function foo14(x: typeof b); // ok - function foo14(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols new file mode 100644 index 00000000000..4d7adc798f9 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.symbols @@ -0,0 +1,384 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class One { foo: string } +>One : Symbol(One, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 0, 0)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 11)) + +class Two { foo: string } +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 11)) + +interface Three { foo: string } +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 17)) + +interface Four { foo: T } +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 15)) +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 19)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 15)) + +interface Five extends Four { } +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 8, 15)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 8, 15)) + +interface Six { +>Six : Symbol(Six, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 8, 37)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 16)) + + foo: T; +>foo : Symbol(foo, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 21)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 9, 14)) +} + +class B { +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 13, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 13, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 13, 20)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 14, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 13, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 14, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 13, 20)) +} + +class C { +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 17, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 17, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 17, 20)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 18, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 17, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 18, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 17, 20)) +} + +class D> { +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 19, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 21, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 21, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 21, 20)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) + + constructor(x: T, y: U) { return null; } +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 22, 16)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 21, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 22, 21)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 21, 20)) +} + +interface I> { +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 25, 12)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 25, 24)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 25, 24)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + + new(x: T, y: U): string; +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 26, 8)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 25, 12)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 26, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 25, 24)) +} + +interface I2 { +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 27, 1)) + + new>(x: T, y: U): string; +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 8)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 20)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 20)) +>Six : Symbol(Six, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 8, 37)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 52)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 8)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 57)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 30, 20)) +} + +var a: { new(x: T, y: U): string } +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 3)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 13)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 25)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 25)) +>One : Symbol(One, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 0, 0)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 41)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 13)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 46)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 25)) + +var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 3)) +>new : Symbol(new, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 9)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 14)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 26)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 26)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 42)) +>T : Symbol(T, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 14)) +>y : Symbol(y, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 47)) +>U : Symbol(U, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 26)) + +function foo1b(x: B); +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 71), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 36, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 37, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 36, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo1b(x: B); // error +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 71), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 36, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 37, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 37, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo1b(x: any) { } +>foo1b : Symbol(foo1b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 71), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 36, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 37, 31)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 38, 15)) + +function foo1c(x: C); +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 38, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 40, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 41, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 40, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo1c(x: C); // error +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 38, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 40, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 41, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 41, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo1c(x: any) { } +>foo1c : Symbol(foo1c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 38, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 40, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 41, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 42, 15)) + +function foo2(x: I, Five>); +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 42, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 44, 48), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 45, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 44, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo2(x: I, Five>); // error +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 42, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 44, 48), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 45, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 45, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo2(x: any) { } +>foo2 : Symbol(foo2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 42, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 44, 48), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 45, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 46, 14)) + +function foo3(x: typeof a); +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 46, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 48, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 49, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 48, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 3)) + +function foo3(x: typeof a); // error +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 46, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 48, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 49, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 49, 14)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 3)) + +function foo3(x: any) { } +>foo3 : Symbol(foo3, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 46, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 48, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 49, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 50, 14)) + +function foo4(x: typeof b); +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 50, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 52, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 53, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 52, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 3)) + +function foo4(x: typeof b); // error +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 50, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 52, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 53, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 53, 14)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 3)) + +function foo4(x: any) { } +>foo4 : Symbol(foo4, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 50, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 52, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 53, 27)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 54, 14)) + +function foo5c(x: C); +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 56, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 57, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 56, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo5c(x: D, Four>); // error +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 56, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 57, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 57, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 19, 1)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) + +function foo5c(x: any) { } +>foo5c : Symbol(foo5c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 54, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 56, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 57, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 58, 15)) + +function foo6c(x: C); +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 58, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 60, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 61, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 60, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo6c(x: D, Four>); // error +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 58, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 60, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 61, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 61, 15)) +>D : Symbol(D, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 19, 1)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) +>Four : Symbol(Four, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 6, 31)) + +function foo6c(x: any) { } +>foo6c : Symbol(foo6c, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 58, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 60, 35), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 61, 49)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 62, 15)) + +function foo8(x: B); +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 62, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 64, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 65, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 64, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo8(x: I, Five>); // error +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 62, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 64, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 65, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 65, 14)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo8(x: any) { } +>foo8 : Symbol(foo8, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 62, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 64, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 65, 48)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 66, 14)) + +function foo9(x: B); +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 68, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 69, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 68, 14)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo9(x: C); // error +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 68, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 69, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 69, 14)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo9(x: any) { } +>foo9 : Symbol(foo9, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 66, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 68, 30), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 69, 34)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 70, 14)) + +function foo10(x: B); +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 70, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 72, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 73, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 72, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo10(x: typeof a); // ok +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 70, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 72, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 73, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 73, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 3)) + +function foo10(x: any) { } +>foo10 : Symbol(foo10, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 70, 25), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 72, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 73, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 74, 15)) + +function foo11(x: B); +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 76, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 77, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 76, 15)) +>B : Symbol(B, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 11, 1)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) +>Two : Symbol(Two, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 4, 25)) + +function foo11(x: typeof b); // ok +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 76, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 77, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 77, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 3)) + +function foo11(x: any) { } +>foo11 : Symbol(foo11, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 74, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 76, 31), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 77, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 78, 15)) + +function foo12(x: I, Five>); +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 80, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 81, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 80, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo12(x: C); // ok +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 80, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 81, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 81, 15)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo12(x: any) { } +>foo12 : Symbol(foo12, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 78, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 80, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 81, 35)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 82, 15)) + +function foo12b(x: I2); +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 82, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 84, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 85, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 84, 16)) +>I2 : Symbol(I2, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 27, 1)) + +function foo12b(x: C); // ok +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 82, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 84, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 85, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 85, 16)) +>C : Symbol(C, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 15, 1)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) +>Three : Symbol(Three, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 5, 25)) + +function foo12b(x: any) { } +>foo12b : Symbol(foo12b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 82, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 84, 23), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 85, 36)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 86, 16)) + +function foo13(x: I, Five>); +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 86, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 88, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 89, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 88, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo13(x: typeof a); // ok +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 86, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 88, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 89, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 89, 15)) +>a : Symbol(a, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 33, 3)) + +function foo13(x: any) { } +>foo13 : Symbol(foo13, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 86, 27), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 88, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 89, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 90, 15)) + +function foo14(x: I, Five>); +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 90, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 92, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 93, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 92, 15)) +>I : Symbol(I, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 23, 1)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) +>Five : Symbol(Five, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 7, 28)) + +function foo14(x: typeof b); // ok +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 90, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 92, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 93, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 93, 15)) +>b : Symbol(b, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 34, 3)) + +function foo14(x: any) { } +>foo14 : Symbol(foo14, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 90, 26), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 92, 49), Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 93, 28)) +>x : Symbol(x, Decl(objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts, 94, 15)) + diff --git a/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types new file mode 100644 index 00000000000..d8109a6a826 --- /dev/null +++ b/tests/baselines/reference/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.types @@ -0,0 +1,389 @@ +=== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/objectTypesIdentityWithGenericConstructSignaturesDifferingByConstraints3.ts === +// Two call or construct signatures are considered identical when they have the same number of type parameters and, considering those +// parameters pairwise identical, have identical type parameter constraints, identical number of parameters with identical kind(required, +// optional or rest) and types, and identical return types. + +class One { foo: string } +>One : One +>foo : string + +class Two { foo: string } +>Two : Two +>foo : string + +interface Three { foo: string } +>Three : Three +>foo : string + +interface Four { foo: T } +>Four : Four +>T : T +>foo : T +>T : T + +interface Five extends Four { } +>Five : Five +>T : T +>Four : Four +>T : T + +interface Six { +>Six : Six +>T : T +>U : U + + foo: T; +>foo : T +>T : T +} + +class B { +>B : B +>T : T +>U : U +>U : U +>Two : Two + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class C { +>C : C +>T : T +>U : U +>U : U +>Three : Three + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +class D> { +>D : D +>T : T +>U : U +>U : U +>Four : Four + + constructor(x: T, y: U) { return null; } +>x : T +>T : T +>y : U +>U : U +>null : null +} + +interface I> { +>I : I +>T : T +>U : U +>U : U +>Five : Five + + new(x: T, y: U): string; +>x : T +>T : T +>y : U +>U : U +} + +interface I2 { +>I2 : I2 + + new>(x: T, y: U): string; +>T : T +>U : U +>U : U +>Six : Six +>x : T +>T : T +>y : U +>U : U +} + +var a: { new(x: T, y: U): string } +>a : new (x: T, y: U) => string +>T : T +>U : U +>U : U +>One : One +>x : T +>T : T +>y : U +>U : U + +var b = { new(x: T, y: U) { return ''; } }; // not a construct signature, function called new +>b : { new(x: T, y: U): string; } +>{ new(x: T, y: U) { return ''; } } : { new(x: T, y: U): string; } +>new : (x: T, y: U) => string +>T : T +>U : U +>U : U +>Two : Two +>x : T +>T : T +>y : U +>U : U +>'' : string + +function foo1b(x: B); +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo1b(x: B); // error +>foo1b : { (x: B): any; (x: B): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo1b(x: any) { } +>foo1b : { (x: B): any; (x: B): any; } +>x : any + +function foo1c(x: C); +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo1c(x: C); // error +>foo1c : { (x: C): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo1c(x: any) { } +>foo1c : { (x: C): any; (x: C): any; } +>x : any + +function foo2(x: I, Five>); +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo2(x: I, Five>); // error +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo2(x: any) { } +>foo2 : { (x: I, Five>): any; (x: I, Five>): any; } +>x : any + +function foo3(x: typeof a); +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo3(x: typeof a); // error +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo3(x: any) { } +>foo3 : { (x: new (x: T, y: U) => string): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo4(x: typeof b); +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo4(x: typeof b); // error +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo4(x: any) { } +>foo4 : { (x: { new(x: T, y: U): string; }): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + +function foo5c(x: C); +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo5c(x: D, Four>); // error +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : D, Four> +>D : D +>Four : Four +>Four : Four + +function foo5c(x: any) { } +>foo5c : { (x: C): any; (x: D, Four>): any; } +>x : any + +function foo6c(x: C); +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo6c(x: D, Four>); // error +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : D, Four> +>D : D +>Four : Four +>Four : Four + +function foo6c(x: any) { } +>foo6c : { (x: C): any; (x: D, Four>): any; } +>x : any + +function foo8(x: B); +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo8(x: I, Five>); // error +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo8(x: any) { } +>foo8 : { (x: B): any; (x: I, Five>): any; } +>x : any + +function foo9(x: B); +>foo9 : { (x: B): any; (x: C): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo9(x: C); // error +>foo9 : { (x: B): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo9(x: any) { } +>foo9 : { (x: B): any; (x: C): any; } +>x : any + +function foo10(x: B); +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo10(x: typeof a); // ok +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo10(x: any) { } +>foo10 : { (x: B): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo11(x: B); +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : B +>B : B +>Two : Two +>Two : Two + +function foo11(x: typeof b); // ok +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo11(x: any) { } +>foo11 : { (x: B): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + +function foo12(x: I, Five>); +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo12(x: C); // ok +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo12(x: any) { } +>foo12 : { (x: I, Five>): any; (x: C): any; } +>x : any + +function foo12b(x: I2); +>foo12b : { (x: I2): any; (x: C): any; } +>x : I2 +>I2 : I2 + +function foo12b(x: C); // ok +>foo12b : { (x: I2): any; (x: C): any; } +>x : C +>C : C +>Three : Three +>Three : Three + +function foo12b(x: any) { } +>foo12b : { (x: I2): any; (x: C): any; } +>x : any + +function foo13(x: I, Five>); +>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo13(x: typeof a); // ok +>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>x : new (x: T, y: U) => string +>a : new (x: T, y: U) => string + +function foo13(x: any) { } +>foo13 : { (x: I, Five>): any; (x: new (x: T, y: U) => string): any; } +>x : any + +function foo14(x: I, Five>); +>foo14 : { (x: I, Five>): any; (x: { new(x: T, y: U): string; }): any; } +>x : I, Five> +>I : I +>Five : Five +>Five : Five + +function foo14(x: typeof b); // ok +>foo14 : { (x: I, Five>): any; (x: { new(x: T, y: U): string; }): any; } +>x : { new(x: T, y: U): string; } +>b : { new(x: T, y: U): string; } + +function foo14(x: any) { } +>foo14 : { (x: I, Five>): any; (x: { new(x: T, y: U): string; }): any; } +>x : any + diff --git a/tests/baselines/reference/parserGenericConstraint2.errors.txt b/tests/baselines/reference/parserGenericConstraint2.errors.txt index a1548d81d9a..00fe33457a5 100644 --- a/tests/baselines/reference/parserGenericConstraint2.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint2.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint2.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint2.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint2.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint2.ts (1 errors) ==== class C > { - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/parserGenericConstraint3.errors.txt b/tests/baselines/reference/parserGenericConstraint3.errors.txt index 1dc7ea4e080..e4e42d5b53b 100644 --- a/tests/baselines/reference/parserGenericConstraint3.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint3.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint3.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint3.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint3.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint3.ts (1 errors) ==== class C> { - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/parserGenericConstraint4.errors.txt b/tests/baselines/reference/parserGenericConstraint4.errors.txt index 3109bca9a2f..b42570593f7 100644 --- a/tests/baselines/reference/parserGenericConstraint4.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint4.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint4.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint4.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint4.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint4.ts (1 errors) ==== class C > > { - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/parserGenericConstraint5.errors.txt b/tests/baselines/reference/parserGenericConstraint5.errors.txt index db8fea938b8..3479731ae13 100644 --- a/tests/baselines/reference/parserGenericConstraint5.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint5.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint5.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint5.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint5.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint5.ts (1 errors) ==== class C> > { - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/parserGenericConstraint6.errors.txt b/tests/baselines/reference/parserGenericConstraint6.errors.txt index 032ed7fafb3..5efbcc8e8d0 100644 --- a/tests/baselines/reference/parserGenericConstraint6.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint6.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint6.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint6.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint6.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint6.ts (1 errors) ==== class C >> { - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/parserGenericConstraint7.errors.txt b/tests/baselines/reference/parserGenericConstraint7.errors.txt index 62dc8373e63..ffff8ea2583 100644 --- a/tests/baselines/reference/parserGenericConstraint7.errors.txt +++ b/tests/baselines/reference/parserGenericConstraint7.errors.txt @@ -1,11 +1,8 @@ -tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint7.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint7.ts(1,19): error TS2304: Cannot find name 'List'. -==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint7.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Generics/parserGenericConstraint7.ts (1 errors) ==== class C>> { - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~~~~ !!! error TS2304: Cannot find name 'List'. } \ No newline at end of file diff --git a/tests/baselines/reference/primitiveConstraints1.errors.txt b/tests/baselines/reference/primitiveConstraints1.errors.txt index 55d1f24f4ba..fb9591bfc31 100644 --- a/tests/baselines/reference/primitiveConstraints1.errors.txt +++ b/tests/baselines/reference/primitiveConstraints1.errors.txt @@ -1,15 +1,15 @@ -tests/cases/compiler/primitiveConstraints1.ts(1,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/primitiveConstraints1.ts(4,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/compiler/primitiveConstraints1.ts(2,6): error TS2344: Type 'string' does not satisfy the constraint 'number'. +tests/cases/compiler/primitiveConstraints1.ts(5,14): error TS2344: Type 'string' does not satisfy the constraint 'number'. ==== tests/cases/compiler/primitiveConstraints1.ts (2 errors) ==== function foo1(t: T, u: U) { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. foo1('hm', 1); // no error + ~~~~~~ +!!! error TS2344: Type 'string' does not satisfy the constraint 'number'. function foo2(t: T, u: U) { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. foo2(1, 'hm'); // error + ~~~~~~ +!!! error TS2344: Type 'string' does not satisfy the constraint 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.errors.txt b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.errors.txt deleted file mode 100644 index 89d6c4dcf2b..00000000000 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.errors.txt +++ /dev/null @@ -1,77 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(13,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(31,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(39,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(40,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(42,14): error TS2339: Property 'foo' does not exist on type '{}'. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts(49,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts (6 errors) ==== - // generic types should behave as if they have properties of their constraint type - - class A { - foo(): string { return ''; } - } - - class B extends A { - bar(): string { - return ''; - } - } - - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - f() { - var x: T; - // BUG 823818 - var a = x['foo'](); // should be string - return a + x.foo(); - } - - g(x: U) { - // BUG 823818 - var a = x['foo'](); // should be string - return a + x.foo(); - } - } - - var r1a = (new C()).f(); - var r1b = (new C()).g(new B()); - - interface I { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo: T; - } - var i: I; - var r2 = i.foo.foo(); - var r2b = i.foo['foo'](); - - var a: { - (): T; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - (x: U): U; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } - var r3 = a().foo(); // error, no inferences for U so it doesn't satisfy constraint - ~~~ -!!! error TS2339: Property 'foo' does not exist on type '{}'. - var r3b = a()['foo'](); - // parameter supplied for type argument inference for U - var r3c = a(new B()).foo(); // valid call to an invalid function, U is inferred as B, which has a foo - var r3d = a(new B())['foo'](); // valid call to an invalid function, U is inferred as B, which has a foo - - var b = { - foo: (x: T) => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - // BUG 823818 - var a = x['foo'](); // should be string - return a + x.foo(); - } - } - - var r4 = b.foo(new B()); // valid call to an invalid function \ No newline at end of file diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols new file mode 100644 index 00000000000..0761c4612f1 --- /dev/null +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.symbols @@ -0,0 +1,190 @@ +=== tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts === +// generic types should behave as if they have properties of their constraint type + +class A { +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) + + foo(): string { return ''; } +>foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +} + +class B extends A { +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) + + bar(): string { +>bar : Symbol(bar, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 6, 19)) + + return ''; + } +} + +class C { +>C : Symbol(C, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 10, 1)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 8)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 20)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 8)) + + f() { +>f : Symbol(f, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 35)) + + var x: T; +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 14, 11)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 20)) + + // BUG 823818 + var a = x['foo'](); // should be string +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 16, 11)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 14, 11)) +>'foo' : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + + return a + x.foo(); +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 16, 11)) +>x.foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 14, 11)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + } + + g(x: U) { +>g : Symbol(g, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 18, 5)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 20, 6)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 8)) + + // BUG 823818 + var a = x['foo'](); // should be string +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 22, 11)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 20, 6)) +>'foo' : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + + return a + x.foo(); +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 22, 11)) +>x.foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 20, 6)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + } +} + +var r1a = (new C()).f(); +>r1a : Symbol(r1a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 27, 3)) +>(new C()).f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 35)) +>C : Symbol(C, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 10, 1)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) +>f : Symbol(C.f, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 12, 35)) + +var r1b = (new C()).g(new B()); +>r1b : Symbol(r1b, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 28, 3)) +>(new C()).g : Symbol(C.g, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 18, 5)) +>C : Symbol(C, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 10, 1)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) +>g : Symbol(C.g, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 18, 5)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) + +interface I { +>I : Symbol(I, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 28, 37)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 12)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 24)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 12)) + + foo: T; +>foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 24)) +} +var i: I; +>i : Symbol(i, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 33, 3)) +>I : Symbol(I, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 28, 37)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) + +var r2 = i.foo.foo(); +>r2 : Symbol(r2, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 34, 3)) +>i.foo.foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>i.foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>i : Symbol(i, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 33, 3)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + +var r2b = i.foo['foo'](); +>r2b : Symbol(r2b, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 35, 3)) +>i.foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>i : Symbol(i, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 33, 3)) +>foo : Symbol(I.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 30, 39)) +>'foo' : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + +var a: { +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 37, 3)) + + (): T; +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 38, 5)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 38, 17)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 38, 5)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 38, 17)) + + (x: U): U; +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 5)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 17)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 17)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 31)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 5)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 39, 5)) +} +var r3 = a().foo(); // error, no inferences for U so it doesn't satisfy constraint +>r3 : Symbol(r3, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 41, 3)) +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 37, 3)) + +var r3b = a()['foo'](); +>r3b : Symbol(r3b, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 42, 3)) +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 37, 3)) + +// parameter supplied for type argument inference for U +var r3c = a(new B()).foo(); // valid call to an invalid function, U is inferred as B, which has a foo +>r3c : Symbol(r3c, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 44, 3)) +>a(new B()).foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 37, 3)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + +var r3d = a(new B())['foo'](); // valid call to an invalid function, U is inferred as B, which has a foo +>r3d : Symbol(r3d, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 45, 3)) +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 37, 3)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) +>'foo' : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + +var b = { +>b : Symbol(b, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 47, 3)) + + foo: (x: T) => { +>foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 47, 9)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 10)) +>A : Symbol(A, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 0, 0)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 22)) +>U : Symbol(U, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 10)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 36)) +>T : Symbol(T, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 22)) + + // BUG 823818 + var a = x['foo'](); // should be string +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 50, 11)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 36)) +>'foo' : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + + return a + x.foo(); +>a : Symbol(a, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 50, 11)) +>x.foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) +>x : Symbol(x, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 48, 36)) +>foo : Symbol(A.foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 2, 9)) + } +} + +var r4 = b.foo(new B()); // valid call to an invalid function +>r4 : Symbol(r4, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 55, 3)) +>b.foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 47, 9)) +>b : Symbol(b, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 47, 3)) +>foo : Symbol(foo, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 47, 9)) +>B : Symbol(B, Decl(propertyAccessOnTypeParameterWithConstraints3.ts, 4, 1)) + diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.types new file mode 100644 index 00000000000..ea325190da6 --- /dev/null +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints3.types @@ -0,0 +1,233 @@ +=== tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints3.ts === +// generic types should behave as if they have properties of their constraint type + +class A { +>A : A + + foo(): string { return ''; } +>foo : () => string +>'' : string +} + +class B extends A { +>B : B +>A : A + + bar(): string { +>bar : () => string + + return ''; +>'' : string + } +} + +class C { +>C : C +>U : U +>A : A +>T : T +>U : U + + f() { +>f : () => string + + var x: T; +>x : T +>T : T + + // BUG 823818 + var a = x['foo'](); // should be string +>a : string +>x['foo']() : string +>x['foo'] : () => string +>x : T +>'foo' : string + + return a + x.foo(); +>a + x.foo() : string +>a : string +>x.foo() : string +>x.foo : () => string +>x : T +>foo : () => string + } + + g(x: U) { +>g : (x: U) => string +>x : U +>U : U + + // BUG 823818 + var a = x['foo'](); // should be string +>a : string +>x['foo']() : string +>x['foo'] : () => string +>x : U +>'foo' : string + + return a + x.foo(); +>a + x.foo() : string +>a : string +>x.foo() : string +>x.foo : () => string +>x : U +>foo : () => string + } +} + +var r1a = (new C()).f(); +>r1a : string +>(new C()).f() : string +>(new C()).f : () => string +>(new C()) : C +>new C() : C +>C : typeof C +>A : A +>B : B +>f : () => string + +var r1b = (new C()).g(new B()); +>r1b : string +>(new C()).g(new B()) : string +>(new C()).g : (x: A) => string +>(new C()) : C +>new C() : C +>C : typeof C +>A : A +>B : B +>g : (x: A) => string +>new B() : B +>B : typeof B + +interface I { +>I : I +>U : U +>A : A +>T : T +>U : U + + foo: T; +>foo : T +>T : T +} +var i: I; +>i : I +>I : I +>A : A +>B : B + +var r2 = i.foo.foo(); +>r2 : string +>i.foo.foo() : string +>i.foo.foo : () => string +>i.foo : B +>i : I +>foo : B +>foo : () => string + +var r2b = i.foo['foo'](); +>r2b : string +>i.foo['foo']() : string +>i.foo['foo'] : () => string +>i.foo : B +>i : I +>foo : B +>'foo' : string + +var a: { +>a : { (): T; (x: U): U; } + + (): T; +>U : U +>A : A +>T : T +>U : U +>T : T + + (x: U): U; +>U : U +>T : T +>T : T +>A : A +>x : U +>U : U +>U : U +} +var r3 = a().foo(); // error, no inferences for U so it doesn't satisfy constraint +>r3 : any +>a().foo() : any +>a().foo : any +>a() : any +>a : { (): T; (x: U): U; } +>foo : any + +var r3b = a()['foo'](); +>r3b : any +>a()['foo']() : any +>a()['foo'] : any +>a() : any +>a : { (): T; (x: U): U; } +>'foo' : string + +// parameter supplied for type argument inference for U +var r3c = a(new B()).foo(); // valid call to an invalid function, U is inferred as B, which has a foo +>r3c : string +>a(new B()).foo() : string +>a(new B()).foo : () => string +>a(new B()) : B +>a : { (): T; (x: U): U; } +>new B() : B +>B : typeof B +>foo : () => string + +var r3d = a(new B())['foo'](); // valid call to an invalid function, U is inferred as B, which has a foo +>r3d : string +>a(new B())['foo']() : string +>a(new B())['foo'] : () => string +>a(new B()) : B +>a : { (): T; (x: U): U; } +>new B() : B +>B : typeof B +>'foo' : string + +var b = { +>b : { foo: (x: T) => string; } +>{ foo: (x: T) => { // BUG 823818 var a = x['foo'](); // should be string return a + x.foo(); }} : { foo: (x: T) => string; } + + foo: (x: T) => { +>foo : (x: T) => string +>(x: T) => { // BUG 823818 var a = x['foo'](); // should be string return a + x.foo(); } : (x: T) => string +>U : U +>A : A +>T : T +>U : U +>x : T +>T : T + + // BUG 823818 + var a = x['foo'](); // should be string +>a : string +>x['foo']() : string +>x['foo'] : () => string +>x : T +>'foo' : string + + return a + x.foo(); +>a + x.foo() : string +>a : string +>x.foo() : string +>x.foo : () => string +>x : T +>foo : () => string + } +} + +var r4 = b.foo(new B()); // valid call to an invalid function +>r4 : string +>b.foo(new B()) : string +>b.foo : (x: T) => string +>b : { foo: (x: T) => string; } +>foo : (x: T) => string +>new B() : B +>B : typeof B + diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints5.errors.txt b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints5.errors.txt index bf45f90564b..d7aa10cc353 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints5.errors.txt +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints5.errors.txt @@ -1,12 +1,10 @@ -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(11,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(21,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(15,32): error TS2339: Property 'notHere' does not exist on type 'U'. tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(25,16): error TS2339: Property 'notHere' does not exist on type 'B'. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(29,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(32,22): error TS2339: Property 'notHere' does not exist on type '{}'. -tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(36,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(38,16): error TS2322: Type 'string' is not assignable to type 'U'. +tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts(38,22): error TS2339: Property 'notHere' does not exist on type 'U'. -==== tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts (6 errors) ==== +==== tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOnTypeParameterWithConstraints5.ts (4 errors) ==== class A { foo(): string { return ''; } } @@ -18,20 +16,18 @@ tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOn } class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. f() { var x: U; var a = x['foo'](); // should be string return a + x.foo() + x.notHere(); + ~~~~~~~ +!!! error TS2339: Property 'notHere' does not exist on type 'U'. } } var r = (new C()).f(); interface I { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. foo: U; } var i: I; @@ -42,21 +38,19 @@ tests/cases/conformance/types/typeParameters/typeParameterLists/propertyAccessOn var a: { (): U; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. } // BUG 794164 var r3: string = a().notHere(); - ~~~~~~~ -!!! error TS2339: Property 'notHere' does not exist on type '{}'. var r3b: string = a()['foo'](); var b = { foo: (x: U): U => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var a = x['foo'](); // should be string return a + x.notHere(); + ~~~~~~~~~~~~~~~ +!!! error TS2322: Type 'string' is not assignable to type 'U'. + ~~~~~~~ +!!! error TS2339: Property 'notHere' does not exist on type 'U'. }, // BUG 794164 bar: b.foo(1).notHere() diff --git a/tests/baselines/reference/recursiveGenericTypeHierarchy.errors.txt b/tests/baselines/reference/recursiveGenericTypeHierarchy.errors.txt deleted file mode 100644 index 3c1e6e2017c..00000000000 --- a/tests/baselines/reference/recursiveGenericTypeHierarchy.errors.txt +++ /dev/null @@ -1,18 +0,0 @@ -tests/cases/compiler/recursiveGenericTypeHierarchy.ts(2,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/recursiveGenericTypeHierarchy.ts(2,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/recursiveGenericTypeHierarchy.ts(3,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/recursiveGenericTypeHierarchy.ts(3,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/recursiveGenericTypeHierarchy.ts (4 errors) ==== - // used to ICE - interface A, S extends A> { } - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface B, S extends B> extends A, B> { } - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. \ No newline at end of file diff --git a/tests/baselines/reference/recursiveGenericTypeHierarchy.symbols b/tests/baselines/reference/recursiveGenericTypeHierarchy.symbols new file mode 100644 index 00000000000..c46174c1e04 --- /dev/null +++ b/tests/baselines/reference/recursiveGenericTypeHierarchy.symbols @@ -0,0 +1,31 @@ +=== tests/cases/compiler/recursiveGenericTypeHierarchy.ts === +// used to ICE +interface A, S extends A> { } +>A : Symbol(A, Decl(recursiveGenericTypeHierarchy.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 1, 12)) +>A : Symbol(A, Decl(recursiveGenericTypeHierarchy.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 1, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 1, 30)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 1, 30)) +>A : Symbol(A, Decl(recursiveGenericTypeHierarchy.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 1, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 1, 30)) + +interface B, S extends B> extends A, B> { } +>B : Symbol(B, Decl(recursiveGenericTypeHierarchy.ts, 1, 53)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 2, 12)) +>B : Symbol(B, Decl(recursiveGenericTypeHierarchy.ts, 1, 53)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 2, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 2, 30)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 2, 30)) +>B : Symbol(B, Decl(recursiveGenericTypeHierarchy.ts, 1, 53)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 2, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 2, 30)) +>A : Symbol(A, Decl(recursiveGenericTypeHierarchy.ts, 0, 0)) +>B : Symbol(B, Decl(recursiveGenericTypeHierarchy.ts, 1, 53)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 2, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 2, 30)) +>B : Symbol(B, Decl(recursiveGenericTypeHierarchy.ts, 1, 53)) +>T : Symbol(T, Decl(recursiveGenericTypeHierarchy.ts, 2, 12)) +>S : Symbol(S, Decl(recursiveGenericTypeHierarchy.ts, 2, 30)) + diff --git a/tests/baselines/reference/recursiveGenericTypeHierarchy.types b/tests/baselines/reference/recursiveGenericTypeHierarchy.types new file mode 100644 index 00000000000..72936b93299 --- /dev/null +++ b/tests/baselines/reference/recursiveGenericTypeHierarchy.types @@ -0,0 +1,31 @@ +=== tests/cases/compiler/recursiveGenericTypeHierarchy.ts === +// used to ICE +interface A, S extends A> { } +>A : A +>T : T +>A : A +>T : T +>S : S +>S : S +>A : A +>T : T +>S : S + +interface B, S extends B> extends A, B> { } +>B : B +>T : T +>B : B +>T : T +>S : S +>S : S +>B : B +>T : T +>S : S +>A : A +>B : B +>T : T +>S : S +>B : B +>T : T +>S : S + diff --git a/tests/baselines/reference/recursiveIdenticalAssignment.errors.txt b/tests/baselines/reference/recursiveIdenticalAssignment.errors.txt deleted file mode 100644 index e33515f9378..00000000000 --- a/tests/baselines/reference/recursiveIdenticalAssignment.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/compiler/recursiveIdenticalAssignment.ts(5,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/recursiveIdenticalAssignment.ts (1 errors) ==== - interface A { - x: A - } - - interface B>> { // error, constraint referencing itself - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x: B - } - - var a: A> - var b: B> = a // Error, any does not satisfy constraint B> - \ No newline at end of file diff --git a/tests/baselines/reference/recursiveIdenticalAssignment.symbols b/tests/baselines/reference/recursiveIdenticalAssignment.symbols new file mode 100644 index 00000000000..b82fe1d9d17 --- /dev/null +++ b/tests/baselines/reference/recursiveIdenticalAssignment.symbols @@ -0,0 +1,35 @@ +=== tests/cases/compiler/recursiveIdenticalAssignment.ts === +interface A { +>A : Symbol(A, Decl(recursiveIdenticalAssignment.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 0, 12)) + + x: A +>x : Symbol(x, Decl(recursiveIdenticalAssignment.ts, 0, 16)) +>A : Symbol(A, Decl(recursiveIdenticalAssignment.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 0, 12)) +} + +interface B>> { // error, constraint referencing itself +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 4, 12)) +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 4, 12)) + + x: B +>x : Symbol(x, Decl(recursiveIdenticalAssignment.ts, 4, 32)) +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>T : Symbol(T, Decl(recursiveIdenticalAssignment.ts, 4, 12)) +} + +var a: A> +>a : Symbol(a, Decl(recursiveIdenticalAssignment.ts, 8, 3)) +>A : Symbol(A, Decl(recursiveIdenticalAssignment.ts, 0, 0)) +>A : Symbol(A, Decl(recursiveIdenticalAssignment.ts, 0, 0)) + +var b: B> = a // Error, any does not satisfy constraint B> +>b : Symbol(b, Decl(recursiveIdenticalAssignment.ts, 9, 3)) +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>B : Symbol(B, Decl(recursiveIdenticalAssignment.ts, 2, 1)) +>a : Symbol(a, Decl(recursiveIdenticalAssignment.ts, 8, 3)) + diff --git a/tests/baselines/reference/recursiveIdenticalAssignment.types b/tests/baselines/reference/recursiveIdenticalAssignment.types new file mode 100644 index 00000000000..aa7bf70bb00 --- /dev/null +++ b/tests/baselines/reference/recursiveIdenticalAssignment.types @@ -0,0 +1,35 @@ +=== tests/cases/compiler/recursiveIdenticalAssignment.ts === +interface A { +>A : A +>T : T + + x: A +>x : A +>A : A +>T : T +} + +interface B>> { // error, constraint referencing itself +>B : B +>T : T +>B : B +>B : B +>T : T + + x: B +>x : B +>B : B +>T : T +} + +var a: A> +>a : A> +>A : A +>A : A + +var b: B> = a // Error, any does not satisfy constraint B> +>b : B> +>B : B +>B : B +>a : A> + diff --git a/tests/baselines/reference/recursiveTypeInGenericConstraint.errors.txt b/tests/baselines/reference/recursiveTypeInGenericConstraint.errors.txt deleted file mode 100644 index c3cf7227308..00000000000 --- a/tests/baselines/reference/recursiveTypeInGenericConstraint.errors.txt +++ /dev/null @@ -1,19 +0,0 @@ -tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts(5,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts (1 errors) ==== - class G { - x: G>; // infinitely expanding type reference - } - - class Foo> { // error, constraint referencing itself - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - bar: T; - } - - class D { - x: G>; - } - - var c1 = new Foo>(); // ok, circularity in assignment compat check causes success \ No newline at end of file diff --git a/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols b/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols new file mode 100644 index 00000000000..d23245e2187 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeInGenericConstraint.symbols @@ -0,0 +1,39 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts === +class G { +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 0, 8)) + + x: G>; // infinitely expanding type reference +>x : Symbol(x, Decl(recursiveTypeInGenericConstraint.ts, 0, 12)) +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 0, 8)) +} + +class Foo> { // error, constraint referencing itself +>Foo : Symbol(Foo, Decl(recursiveTypeInGenericConstraint.ts, 2, 1)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 4, 10)) +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 4, 10)) + + bar: T; +>bar : Symbol(bar, Decl(recursiveTypeInGenericConstraint.ts, 4, 27)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 4, 10)) +} + +class D { +>D : Symbol(D, Decl(recursiveTypeInGenericConstraint.ts, 6, 1)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 8, 8)) + + x: G>; +>x : Symbol(x, Decl(recursiveTypeInGenericConstraint.ts, 8, 12)) +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>G : Symbol(G, Decl(recursiveTypeInGenericConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypeInGenericConstraint.ts, 8, 8)) +} + +var c1 = new Foo>(); // ok, circularity in assignment compat check causes success +>c1 : Symbol(c1, Decl(recursiveTypeInGenericConstraint.ts, 12, 3)) +>Foo : Symbol(Foo, Decl(recursiveTypeInGenericConstraint.ts, 2, 1)) +>D : Symbol(D, Decl(recursiveTypeInGenericConstraint.ts, 6, 1)) + diff --git a/tests/baselines/reference/recursiveTypeInGenericConstraint.types b/tests/baselines/reference/recursiveTypeInGenericConstraint.types new file mode 100644 index 00000000000..97f48aa64e5 --- /dev/null +++ b/tests/baselines/reference/recursiveTypeInGenericConstraint.types @@ -0,0 +1,40 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypeInGenericConstraint.ts === +class G { +>G : G +>T : T + + x: G>; // infinitely expanding type reference +>x : G> +>G : G +>G : G +>T : T +} + +class Foo> { // error, constraint referencing itself +>Foo : Foo +>T : T +>G : G +>T : T + + bar: T; +>bar : T +>T : T +} + +class D { +>D : D +>T : T + + x: G>; +>x : G> +>G : G +>G : G +>T : T +} + +var c1 = new Foo>(); // ok, circularity in assignment compat check causes success +>c1 : Foo> +>new Foo>() : Foo> +>Foo : typeof Foo +>D : D + diff --git a/tests/baselines/reference/recursiveTypes1.errors.txt b/tests/baselines/reference/recursiveTypes1.errors.txt deleted file mode 100644 index 62d4938ef1e..00000000000 --- a/tests/baselines/reference/recursiveTypes1.errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -tests/cases/compiler/recursiveTypes1.ts(1,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/recursiveTypes1.ts(6,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/recursiveTypes1.ts (2 errors) ==== - interface Entity> { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - X: T; - Y: T; - } - - interface Person> extends Entity { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - n: number; - } - - interface Customer extends Person { - s: string; - } - \ No newline at end of file diff --git a/tests/baselines/reference/recursiveTypes1.symbols b/tests/baselines/reference/recursiveTypes1.symbols new file mode 100644 index 00000000000..8ced51db0dc --- /dev/null +++ b/tests/baselines/reference/recursiveTypes1.symbols @@ -0,0 +1,37 @@ +=== tests/cases/compiler/recursiveTypes1.ts === +interface Entity> { +>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) +>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) + + X: T; +>X : Symbol(X, Decl(recursiveTypes1.ts, 0, 39)) +>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) + + Y: T; +>Y : Symbol(Y, Decl(recursiveTypes1.ts, 1, 8)) +>T : Symbol(T, Decl(recursiveTypes1.ts, 0, 17)) +} + +interface Person> extends Entity { +>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1)) +>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17)) +>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1)) +>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17)) +>Entity : Symbol(Entity, Decl(recursiveTypes1.ts, 0, 0)) +>U : Symbol(U, Decl(recursiveTypes1.ts, 5, 17)) + + n: number; +>n : Symbol(n, Decl(recursiveTypes1.ts, 5, 57)) +} + +interface Customer extends Person { +>Customer : Symbol(Customer, Decl(recursiveTypes1.ts, 7, 1)) +>Person : Symbol(Person, Decl(recursiveTypes1.ts, 3, 1)) +>Customer : Symbol(Customer, Decl(recursiveTypes1.ts, 7, 1)) + + s: string; +>s : Symbol(s, Decl(recursiveTypes1.ts, 9, 45)) +} + diff --git a/tests/baselines/reference/recursiveTypes1.types b/tests/baselines/reference/recursiveTypes1.types new file mode 100644 index 00000000000..803c965e471 --- /dev/null +++ b/tests/baselines/reference/recursiveTypes1.types @@ -0,0 +1,37 @@ +=== tests/cases/compiler/recursiveTypes1.ts === +interface Entity> { +>Entity : Entity +>T : T +>Entity : Entity +>T : T + + X: T; +>X : T +>T : T + + Y: T; +>Y : T +>T : T +} + +interface Person> extends Entity { +>Person : Person +>U : U +>Person : Person +>U : U +>Entity : Entity +>U : U + + n: number; +>n : number +} + +interface Customer extends Person { +>Customer : Customer +>Person : Person +>Customer : Customer + + s: string; +>s : string +} + diff --git a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.errors.txt b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.errors.txt deleted file mode 100644 index 577debaed4e..00000000000 --- a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.errors.txt +++ /dev/null @@ -1,49 +0,0 @@ -tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts(21,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts (1 errors) ==== - class List { - data: T; - next: List>; - } - - class MyList { - data: T; - next: MyList>; - } - - function foo(x: List); - function foo(x: List); // error, duplicate - function foo(x: List) { - } - - function foo2(x: List); - function foo2(x: MyList); // ok, nominally compared with first overload - function foo2(x: any) { - } - - function other, U>() { - ~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - // error but wrong error - // BUG 838247 - function foo3(x: T); - function foo3(x: MyList) { } - - // should be error - // BUG 838247 - function foo4(x: T); - function foo4(x: List) { } - - // ok - function foo5(x: T): string; - function foo5(x: List): number; - function foo5(x: MyList): boolean; - function foo5(x: any): any { return null; } - - var list: List; - var myList: MyList; - - var r = foo5(list); - var r2 = foo5(myList); - } \ No newline at end of file diff --git a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols new file mode 100644 index 00000000000..9894c6acd45 --- /dev/null +++ b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.symbols @@ -0,0 +1,154 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts === +class List { +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) + + data: T; +>data : Symbol(data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 15)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) + + next: List>; +>next : Symbol(next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 1, 12)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 11)) +} + +class MyList { +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) + + data: T; +>data : Symbol(data, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 17)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) + + next: MyList>; +>next : Symbol(next, Decl(recursiveTypesUsedAsFunctionParameters.ts, 6, 12)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 5, 13)) +} + +function foo(x: List); +>foo : Symbol(foo, Decl(recursiveTypesUsedAsFunctionParameters.ts, 8, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 28), Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 28)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 13)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 16)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 13)) + +function foo(x: List); // error, duplicate +>foo : Symbol(foo, Decl(recursiveTypesUsedAsFunctionParameters.ts, 8, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 28), Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 28)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 13)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 16)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 13)) + +function foo(x: List) { +>foo : Symbol(foo, Decl(recursiveTypesUsedAsFunctionParameters.ts, 8, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 10, 28), Decl(recursiveTypesUsedAsFunctionParameters.ts, 11, 28)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 12, 13)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 12, 16)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 12, 13)) +} + +function foo2(x: List); +>foo2 : Symbol(foo2, Decl(recursiveTypesUsedAsFunctionParameters.ts, 13, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 29), Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 31)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 14)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 17)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 14)) + +function foo2(x: MyList); // ok, nominally compared with first overload +>foo2 : Symbol(foo2, Decl(recursiveTypesUsedAsFunctionParameters.ts, 13, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 29), Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 31)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 14)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 17)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 14)) + +function foo2(x: any) { +>foo2 : Symbol(foo2, Decl(recursiveTypesUsedAsFunctionParameters.ts, 13, 1), Decl(recursiveTypesUsedAsFunctionParameters.ts, 15, 29), Decl(recursiveTypesUsedAsFunctionParameters.ts, 16, 31)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 17, 14)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 17, 17)) +} + +function other, U>() { +>other : Symbol(other, Decl(recursiveTypesUsedAsFunctionParameters.ts, 18, 1)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 15)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 33)) +>U : Symbol(U, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 33)) + + // error but wrong error + // BUG 838247 + function foo3(x: T); +>foo3 : Symbol(foo3, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 40), Decl(recursiveTypesUsedAsFunctionParameters.ts, 23, 27)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 23, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 23, 21)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 15)) + + function foo3(x: MyList) { } +>foo3 : Symbol(foo3, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 40), Decl(recursiveTypesUsedAsFunctionParameters.ts, 23, 27)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 24, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 24, 21)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 24, 18)) + + // should be error + // BUG 838247 + function foo4(x: T); +>foo4 : Symbol(foo4, Decl(recursiveTypesUsedAsFunctionParameters.ts, 24, 38), Decl(recursiveTypesUsedAsFunctionParameters.ts, 28, 27)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 28, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 28, 21)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 15)) + + function foo4(x: List) { } +>foo4 : Symbol(foo4, Decl(recursiveTypesUsedAsFunctionParameters.ts, 24, 38), Decl(recursiveTypesUsedAsFunctionParameters.ts, 28, 27)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 21)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 18)) + + // ok + function foo5(x: T): string; +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 21)) +>T : Symbol(T, Decl(recursiveTypesUsedAsFunctionParameters.ts, 20, 15)) + + function foo5(x: List): number; +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 21)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 18)) + + function foo5(x: MyList): boolean; +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 21)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 18)) + + function foo5(x: any): any { return null; } +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>V : Symbol(V, Decl(recursiveTypesUsedAsFunctionParameters.ts, 35, 18)) +>x : Symbol(x, Decl(recursiveTypesUsedAsFunctionParameters.ts, 35, 21)) + + var list: List; +>list : Symbol(list, Decl(recursiveTypesUsedAsFunctionParameters.ts, 37, 7)) +>List : Symbol(List, Decl(recursiveTypesUsedAsFunctionParameters.ts, 0, 0)) + + var myList: MyList; +>myList : Symbol(myList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 38, 7)) +>MyList : Symbol(MyList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 3, 1)) + + var r = foo5(list); +>r : Symbol(r, Decl(recursiveTypesUsedAsFunctionParameters.ts, 40, 7)) +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>list : Symbol(list, Decl(recursiveTypesUsedAsFunctionParameters.ts, 37, 7)) + + var r2 = foo5(myList); +>r2 : Symbol(r2, Decl(recursiveTypesUsedAsFunctionParameters.ts, 41, 7)) +>foo5 : Symbol(foo5, Decl(recursiveTypesUsedAsFunctionParameters.ts, 29, 36), Decl(recursiveTypesUsedAsFunctionParameters.ts, 32, 35), Decl(recursiveTypesUsedAsFunctionParameters.ts, 33, 41), Decl(recursiveTypesUsedAsFunctionParameters.ts, 34, 44)) +>myList : Symbol(myList, Decl(recursiveTypesUsedAsFunctionParameters.ts, 38, 7)) +} diff --git a/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.types b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.types new file mode 100644 index 00000000000..b800b2641fe --- /dev/null +++ b/tests/baselines/reference/recursiveTypesUsedAsFunctionParameters.types @@ -0,0 +1,157 @@ +=== tests/cases/conformance/types/typeRelationships/recursiveTypes/recursiveTypesUsedAsFunctionParameters.ts === +class List { +>List : List +>T : T + + data: T; +>data : T +>T : T + + next: List>; +>next : List> +>List : List +>List : List +>T : T +} + +class MyList { +>MyList : MyList +>T : T + + data: T; +>data : T +>T : T + + next: MyList>; +>next : MyList> +>MyList : MyList +>MyList : MyList +>T : T +} + +function foo(x: List); +>foo : { (x: List): any; (x: List): any; } +>T : T +>x : List +>List : List +>T : T + +function foo(x: List); // error, duplicate +>foo : { (x: List): any; (x: List): any; } +>U : U +>x : List +>List : List +>U : U + +function foo(x: List) { +>foo : { (x: List): any; (x: List): any; } +>T : T +>x : List +>List : List +>T : T +} + +function foo2(x: List); +>foo2 : { (x: List): any; (x: MyList): any; } +>T : T +>x : List +>List : List +>T : T + +function foo2(x: MyList); // ok, nominally compared with first overload +>foo2 : { (x: List): any; (x: MyList): any; } +>U : U +>x : MyList +>MyList : MyList +>U : U + +function foo2(x: any) { +>foo2 : { (x: List): any; (x: MyList): any; } +>T : T +>x : any +} + +function other, U>() { +>other : , U>() => void +>T : T +>List : List +>U : U +>U : U + + // error but wrong error + // BUG 838247 + function foo3(x: T); +>foo3 : (x: T) => any +>V : V +>x : T +>T : T + + function foo3(x: MyList) { } +>foo3 : (x: T) => any +>V : V +>x : MyList +>MyList : MyList +>V : V + + // should be error + // BUG 838247 + function foo4(x: T); +>foo4 : (x: T) => any +>V : V +>x : T +>T : T + + function foo4(x: List) { } +>foo4 : (x: T) => any +>V : V +>x : List +>List : List +>V : V + + // ok + function foo5(x: T): string; +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>V : V +>x : T +>T : T + + function foo5(x: List): number; +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>V : V +>x : List +>List : List +>V : V + + function foo5(x: MyList): boolean; +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>V : V +>x : MyList +>MyList : MyList +>V : V + + function foo5(x: any): any { return null; } +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>V : V +>x : any +>null : null + + var list: List; +>list : List +>List : List + + var myList: MyList; +>myList : MyList +>MyList : MyList + + var r = foo5(list); +>r : number +>foo5(list) : number +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>list : List + + var r2 = foo5(myList); +>r2 : number +>foo5(myList) : number +>foo5 : { (x: T): string; (x: List): number; (x: MyList): boolean; } +>myList : MyList +} diff --git a/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.errors.txt b/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.errors.txt index 8a916c16b2d..af75273ade3 100644 --- a/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.errors.txt +++ b/tests/baselines/reference/stringLiteralTypeIsSubtypeOfString.errors.txt @@ -5,15 +5,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLite tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(38,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(77,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(90,10): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(94,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(95,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(96,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(98,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(99,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts(100,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts (13 errors) ==== +==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLiteralTypeIsSubtypeOfString.ts (7 errors) ==== // string literal types are subtypes of string, any // ok @@ -122,21 +116,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/stringLite function f14(x: any) { } function f15(x: 'a'); - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. function f15(x: U); - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. function f15(x: any) { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. function f16(x: 'a'); - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. function f16(x: U); - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f16(x: any) { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. \ No newline at end of file + function f16(x: any) { } \ No newline at end of file diff --git a/tests/baselines/reference/subtypesOfTypeParameter.errors.txt b/tests/baselines/reference/subtypesOfTypeParameter.errors.txt index 042d8227b78..14e2275cbf9 100644 --- a/tests/baselines/reference/subtypesOfTypeParameter.errors.txt +++ b/tests/baselines/reference/subtypesOfTypeParameter.errors.txt @@ -1,10 +1,9 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameter.ts(7,7): error TS2415: Class 'D1' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameter.ts(95,21): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameter.ts (2 errors) ==== +==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameter.ts (1 errors) ==== // checking whether other types are subtypes of type parameters class C3 { @@ -104,8 +103,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } function f18(a: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var r18 = true ? x : a; var r18 = true ? a : x; } diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints.errors.txt b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints.errors.txt index 2bb0db83e6d..bd7bbeb007e 100644 --- a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints.errors.txt +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints.errors.txt @@ -1,142 +1,51 @@ -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(7,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(12,7): error TS2415: Class 'D2' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(12,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(14,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(17,7): error TS2415: Class 'D3' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(17,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(19,5): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(22,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(31,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(31,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(36,7): error TS2415: Class 'D6' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(36,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(36,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(38,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(41,7): error TS2415: Class 'D7' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(41,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(41,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(43,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(48,7): error TS2415: Class 'D8' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(48,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(48,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'V' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(50,5): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(53,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(53,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(58,7): error TS2415: Class 'D10' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'U' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(58,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(58,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(60,5): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(65,7): error TS2415: Class 'D11' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(65,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(65,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(67,5): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(70,7): error TS2415: Class 'D12' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(70,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(70,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(72,5): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(75,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(75,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(83,7): error TS2415: Class 'D14' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(83,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(83,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(85,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(88,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(88,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(93,7): error TS2415: Class 'D16' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(93,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(93,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(95,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(98,7): error TS2415: Class 'D17' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(98,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(98,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(100,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(105,7): error TS2415: Class 'D18' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(105,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(105,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(107,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(110,7): error TS2415: Class 'D19' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(110,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(110,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'V' is not assignable to type 'T'. + Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(112,5): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(115,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(115,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(120,7): error TS2415: Class 'D21' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'U' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(120,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(120,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(122,5): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(127,7): error TS2415: Class 'D22' incorrectly extends base class 'C3'. - Types of property 'foo' are incompatible. - Type 'T' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(127,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(127,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(129,5): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(132,7): error TS2415: Class 'D23' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'T'. Type 'Date' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(132,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(132,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(134,5): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(137,7): error TS2415: Class 'D24' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'U'. Type 'Date' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(137,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(137,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(139,5): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(142,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(142,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(149,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(149,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(154,7): error TS2415: Class 'D27' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'Date' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(154,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(154,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(156,5): error TS2411: Property 'foo' of type 'Date' is not assignable to string index type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(159,7): error TS2415: Class 'D28' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'Date' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(159,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(159,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(161,5): error TS2411: Property 'foo' of type 'Date' is not assignable to string index type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(164,7): error TS2415: Class 'D29' incorrectly extends base class 'C3'. Types of property 'foo' are incompatible. Type 'Date' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(164,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(164,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts(166,5): error TS2411: Property 'foo' of type 'Date' is not assignable to string index type 'V'. -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts (94 errors) ==== +==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints.ts (20 errors) ==== // checking whether other types are subtypes of type parameters with constraints class C3 { @@ -144,23 +53,13 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D1 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: T; // ok } class D2 extends C3 { - ~~ -!!! error TS2415: Class 'D2' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: T; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. } class D3 extends C3 { @@ -168,8 +67,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D3' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'U' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: U; // error ~~~~~~~ @@ -177,8 +74,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D4 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: U; // ok } @@ -188,42 +83,18 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf // test if T is subtype of T, U, V // should all work class D5 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: T; // ok } class D6 extends C3 { - ~~ -!!! error TS2415: Class 'D6' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: T; - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. } class D7 extends C3 { - ~~ -!!! error TS2415: Class 'D7' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'V'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: T; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. } // test if U is a subtype of T, U, V @@ -233,10 +104,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D8' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'U' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'V' is not assignable to type 'T'. [x: string]: T; foo: U; // error ~~~~~~~ @@ -244,27 +112,13 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D9 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: U; // ok } class D10 extends C3 { - ~~~ -!!! error TS2415: Class 'D10' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'U' is not assignable to type 'V'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: U; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. } // test if V is a subtype of T, U, V @@ -274,10 +128,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D11' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: V; // error ~~~~~~~ @@ -289,10 +139,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D12' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: V; // error ~~~~~~~ @@ -300,10 +146,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D13 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: V; // ok } @@ -312,74 +154,30 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf // test if T is subtype of T, U, V, Date // should all work class D14 extends C3 { - ~~~ -!!! error TS2415: Class 'D14' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'Date'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: Date; foo: T; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. } class D15 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: T; // ok } class D16 extends C3 { - ~~~ -!!! error TS2415: Class 'D16' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: T; - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. } class D17 extends C3 { - ~~~ -!!! error TS2415: Class 'D17' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'V'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: T; - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. } // test if U is a subtype of T, U, V, Date // only a subtype of V, Date and itself class D18 extends C3 { - ~~~ -!!! error TS2415: Class 'D18' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'Date'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: Date; foo: T; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. } class D19 extends C3 { @@ -387,10 +185,8 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D19' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'U' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'V' is not assignable to type 'T'. +!!! error TS2415: Type 'Date' is not assignable to type 'T'. [x: string]: T; foo: U; // error ~~~~~~~ @@ -398,44 +194,20 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D20 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: U; // ok } class D21 extends C3 { - ~~~ -!!! error TS2415: Class 'D21' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'U' is not assignable to type 'V'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: U; - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. } // test if V is a subtype of T, U, V, Date // only a subtype of itself and Date class D22 extends C3 { - ~~~ -!!! error TS2415: Class 'D22' incorrectly extends base class 'C3'. -!!! error TS2415: Types of property 'foo' are incompatible. -!!! error TS2415: Type 'T' is not assignable to type 'Date'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: Date; foo: T; // ok - ~~~~~~~ -!!! error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'Date'. } class D23 extends C3 { @@ -444,10 +216,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'T'. !!! error TS2415: Type 'Date' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: V; // error ~~~~~~~ @@ -460,10 +228,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'U'. !!! error TS2415: Type 'Date' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: V; // error ~~~~~~~ @@ -471,10 +235,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D25 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: V; // ok } @@ -482,10 +242,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf // test if Date is a subtype of T, U, V, Date // only a subtype of itself class D26 extends C3 { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: Date; foo: Date; // ok } @@ -495,10 +251,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D27' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'Date' is not assignable to type 'T'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: Date; // error ~~~~~~~~~~ @@ -510,10 +262,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D28' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'Date' is not assignable to type 'U'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: Date; // error ~~~~~~~~~~ @@ -525,10 +273,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D29' incorrectly extends base class 'C3'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'Date' is not assignable to type 'V'. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: Date; // error ~~~~~~~~~~ diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.errors.txt b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.errors.txt deleted file mode 100644 index 1a2ced3b6f2..00000000000 --- a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.errors.txt +++ /dev/null @@ -1,175 +0,0 @@ -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts(3,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts(9,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts(9,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts(23,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts(143,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts (5 errors) ==== - // checking whether other types are subtypes of type parameters with constraints - - function f1(x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var r = true ? x : y; - var r = true ? y : x; - } - - // V > U > T - function f2(x: T, y: U, z: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var r = true ? x : y; - var r = true ? y : x; - - // ok - var r2 = true ? z : y; - var r2 = true ? y : z; - - // ok - var r2a = true ? z : x; - var r2b = true ? x : z; - } - - // Date > U > T - function f3(x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var r = true ? x : y; - var r = true ? y : x; - - // ok - var r2 = true ? x : new Date(); - var r2 = true ? new Date() : x; - - // ok - var r3 = true ? y : new Date(); - var r3 = true ? new Date() : y; - } - - - interface I1 { foo: number; } - class C1 { foo: number; } - class C2 { foo: T; } - enum E { A } - function f() { } - module f { - export var bar = 1; - } - class c { baz: string } - module c { - export var bar = 1; - } - - function f4(x: T) { - var r0 = true ? x : null; // ok - var r0 = true ? null : x; // ok - - var u: typeof undefined; - var r0b = true ? u : x; // ok - var r0b = true ? x : u; // ok - } - - function f5(x: T) { - var r1 = true ? 1 : x; // ok - var r1 = true ? x : 1; // ok - } - - function f6(x: T) { - var r2 = true ? '' : x; // ok - var r2 = true ? x : ''; // ok - } - - function f7(x: T) { - var r3 = true ? true : x; // ok - var r3 = true ? x : true; // ok - } - - function f8(x: T) { - var r4 = true ? new Date() : x; // ok - var r4 = true ? x : new Date(); // ok - } - - function f9(x: T) { - var r5 = true ? /1/ : x; // ok - var r5 = true ? x : /1/; // ok - } - - function f10(x: T) { - var r6 = true ? { foo: 1 } : x; // ok - var r6 = true ? x : { foo: 1 }; // ok - } - - function f11 void>(x: T) { - var r7 = true ? () => { } : x; // ok - var r7 = true ? x : () => { }; // ok - } - - function f12(x: U) => U>(x: T) { - var r8 = true ? (x: T) => { return x } : x; // ok - var r8b = true ? x : (x: T) => { return x }; // ok, type parameters not identical across declarations - } - - function f13(x: T) { - var i1: I1; - var r9 = true ? i1 : x; // ok - var r9 = true ? x : i1; // ok - } - - function f14(x: T) { - var c1: C1; - var r10 = true ? c1 : x; // ok - var r10 = true ? x : c1; // ok - } - - function f15>(x: T) { - var c2: C2; - var r12 = true ? c2 : x; // ok - var r12 = true ? x : c2; // ok - } - - function f16(x: T) { - var r13 = true ? E : x; // ok - var r13 = true ? x : E; // ok - - var r14 = true ? E.A : x; // ok - var r14 = true ? x : E.A; // ok - } - - function f17(x: T) { - var af: typeof f; - var r15 = true ? af : x; // ok - var r15 = true ? x : af; // ok - } - - function f18(x: T) { - var ac: typeof c; - var r16 = true ? ac : x; // ok - var r16 = true ? x : ac; // ok - } - - function f19(x: T) { - function f17(a: U) { - var r17 = true ? x : a; // ok - var r17 = true ? a : x; // ok - } - - function f18(a: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var r18 = true ? x : a; // ok - var r18 = true ? a : x; // ok - } - } - - function f20(x: T) { - var r19 = true ? new Object() : x; // ok - var r19 = true ? x : new Object(); // ok - } - - function f21(x: T) { - var r20 = true ? {} : x; // ok - var r20 = true ? x : {}; // ok - } \ No newline at end of file diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols new file mode 100644 index 00000000000..05276362cbe --- /dev/null +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.symbols @@ -0,0 +1,548 @@ +=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts === +// checking whether other types are subtypes of type parameters with constraints + +function f1(x: T, y: U) { +>f1 : Symbol(f1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 12)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 24)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 24)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 28)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 12)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 33)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 24)) + + var r = true ? x : y; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 3, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 4, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 28)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 33)) + + var r = true ? y : x; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 3, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 4, 7)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 33)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 2, 28)) +} + +// V > U > T +function f2(x: T, y: U, z: V) { +>f2 : Symbol(f2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 5, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 12)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 24)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 24)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 37)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 37)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 41)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 12)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 46)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 24)) +>z : Symbol(z, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 52)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 37)) + + var r = true ? x : y; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 9, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 10, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 41)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 46)) + + var r = true ? y : x; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 9, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 10, 7)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 46)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 41)) + + // ok + var r2 = true ? z : y; +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 13, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 14, 7)) +>z : Symbol(z, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 52)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 46)) + + var r2 = true ? y : z; +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 13, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 14, 7)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 46)) +>z : Symbol(z, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 52)) + + // ok + var r2a = true ? z : x; +>r2a : Symbol(r2a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 17, 7)) +>z : Symbol(z, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 52)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 41)) + + var r2b = true ? x : z; +>r2b : Symbol(r2b, Decl(subtypesOfTypeParameterWithConstraints2.ts, 18, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 41)) +>z : Symbol(z, Decl(subtypesOfTypeParameterWithConstraints2.ts, 8, 52)) +} + +// Date > U > T +function f3(x: T, y: U) { +>f3 : Symbol(f3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 19, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 12)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 24)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 24)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 12)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 24)) + + var r = true ? x : y; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 23, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 24, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) + + var r = true ? y : x; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints2.ts, 23, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 24, 7)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) + + // ok + var r2 = true ? x : new Date(); +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 27, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 28, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + var r2 = true ? new Date() : x; +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 27, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 28, 7)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 41)) + + // ok + var r3 = true ? y : new Date(); +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 31, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 32, 7)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + var r3 = true ? new Date() : y; +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 31, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 32, 7)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>y : Symbol(y, Decl(subtypesOfTypeParameterWithConstraints2.ts, 22, 46)) +} + + +interface I1 { foo: number; } +>I1 : Symbol(I1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 33, 1)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 14)) + +class C1 { foo: number; } +>C1 : Symbol(C1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 29)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 10)) + +class C2 { foo: T; } +>C2 : Symbol(C2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 25)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 9)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 13)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 9)) + +enum E { A } +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) +>A : Symbol(E.A, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 8)) + +function f() { } +>f : Symbol(f, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 12), Decl(subtypesOfTypeParameterWithConstraints2.ts, 40, 16)) + +module f { +>f : Symbol(f, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 12), Decl(subtypesOfTypeParameterWithConstraints2.ts, 40, 16)) + + export var bar = 1; +>bar : Symbol(bar, Decl(subtypesOfTypeParameterWithConstraints2.ts, 42, 14)) +} +class c { baz: string } +>c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) +>baz : Symbol(baz, Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 9)) + +module c { +>c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) + + export var bar = 1; +>bar : Symbol(bar, Decl(subtypesOfTypeParameterWithConstraints2.ts, 46, 14)) +} + +function f4(x: T) { +>f4 : Symbol(f4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 47, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 12)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 12)) + + var r0 = true ? x : null; // ok +>r0 : Symbol(r0, Decl(subtypesOfTypeParameterWithConstraints2.ts, 50, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 51, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) + + var r0 = true ? null : x; // ok +>r0 : Symbol(r0, Decl(subtypesOfTypeParameterWithConstraints2.ts, 50, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 51, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) + + var u: typeof undefined; +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints2.ts, 53, 7)) +>undefined : Symbol(undefined) + + var r0b = true ? u : x; // ok +>r0b : Symbol(r0b, Decl(subtypesOfTypeParameterWithConstraints2.ts, 54, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 55, 7)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints2.ts, 53, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) + + var r0b = true ? x : u; // ok +>r0b : Symbol(r0b, Decl(subtypesOfTypeParameterWithConstraints2.ts, 54, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 55, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 49, 30)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints2.ts, 53, 7)) +} + +function f5(x: T) { +>f5 : Symbol(f5, Decl(subtypesOfTypeParameterWithConstraints2.ts, 56, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 12)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 30)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 12)) + + var r1 = true ? 1 : x; // ok +>r1 : Symbol(r1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 59, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 60, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 30)) + + var r1 = true ? x : 1; // ok +>r1 : Symbol(r1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 59, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 60, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 58, 30)) +} + +function f6(x: T) { +>f6 : Symbol(f6, Decl(subtypesOfTypeParameterWithConstraints2.ts, 61, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 12)) +>String : Symbol(String, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 30)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 12)) + + var r2 = true ? '' : x; // ok +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 64, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 65, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 30)) + + var r2 = true ? x : ''; // ok +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 64, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 65, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 63, 30)) +} + +function f7(x: T) { +>f7 : Symbol(f7, Decl(subtypesOfTypeParameterWithConstraints2.ts, 66, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 68, 12)) +>Boolean : Symbol(Boolean, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 68, 31)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 68, 12)) + + var r3 = true ? true : x; // ok +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 69, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 70, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 68, 31)) + + var r3 = true ? x : true; // ok +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints2.ts, 69, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 70, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 68, 31)) +} + +function f8(x: T) { +>f8 : Symbol(f8, Decl(subtypesOfTypeParameterWithConstraints2.ts, 71, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 12)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 12)) + + var r4 = true ? new Date() : x; // ok +>r4 : Symbol(r4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 74, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 75, 7)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) + + var r4 = true ? x : new Date(); // ok +>r4 : Symbol(r4, Decl(subtypesOfTypeParameterWithConstraints2.ts, 74, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 75, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 73, 28)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +} + +function f9(x: T) { +>f9 : Symbol(f9, Decl(subtypesOfTypeParameterWithConstraints2.ts, 76, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 78, 12)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 78, 30)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 78, 12)) + + var r5 = true ? /1/ : x; // ok +>r5 : Symbol(r5, Decl(subtypesOfTypeParameterWithConstraints2.ts, 79, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 80, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 78, 30)) + + var r5 = true ? x : /1/; // ok +>r5 : Symbol(r5, Decl(subtypesOfTypeParameterWithConstraints2.ts, 79, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 80, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 78, 30)) +} + +function f10(x: T) { +>f10 : Symbol(f10, Decl(subtypesOfTypeParameterWithConstraints2.ts, 81, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 13)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 24)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 40)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 13)) + + var r6 = true ? { foo: 1 } : x; // ok +>r6 : Symbol(r6, Decl(subtypesOfTypeParameterWithConstraints2.ts, 84, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 85, 7)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 84, 21)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 40)) + + var r6 = true ? x : { foo: 1 }; // ok +>r6 : Symbol(r6, Decl(subtypesOfTypeParameterWithConstraints2.ts, 84, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 85, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 83, 40)) +>foo : Symbol(foo, Decl(subtypesOfTypeParameterWithConstraints2.ts, 85, 25)) +} + +function f11 void>(x: T) { +>f11 : Symbol(f11, Decl(subtypesOfTypeParameterWithConstraints2.ts, 86, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 88, 13)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 88, 35)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 88, 13)) + + var r7 = true ? () => { } : x; // ok +>r7 : Symbol(r7, Decl(subtypesOfTypeParameterWithConstraints2.ts, 89, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 90, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 88, 35)) + + var r7 = true ? x : () => { }; // ok +>r7 : Symbol(r7, Decl(subtypesOfTypeParameterWithConstraints2.ts, 89, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 90, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 88, 35)) +} + +function f12(x: U) => U>(x: T) { +>f12 : Symbol(f12, Decl(subtypesOfTypeParameterWithConstraints2.ts, 91, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 13)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 24)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 27)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 24)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 24)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 39)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 13)) + + var r8 = true ? (x: T) => { return x } : x; // ok +>r8 : Symbol(r8, Decl(subtypesOfTypeParameterWithConstraints2.ts, 94, 7)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 94, 21)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 94, 24)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 94, 21)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 94, 24)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 39)) + + var r8b = true ? x : (x: T) => { return x }; // ok, type parameters not identical across declarations +>r8b : Symbol(r8b, Decl(subtypesOfTypeParameterWithConstraints2.ts, 95, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 93, 39)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 95, 26)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 95, 29)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 95, 26)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 95, 29)) +} + +function f13(x: T) { +>f13 : Symbol(f13, Decl(subtypesOfTypeParameterWithConstraints2.ts, 96, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 98, 13)) +>I1 : Symbol(I1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 33, 1)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 98, 27)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 98, 13)) + + var i1: I1; +>i1 : Symbol(i1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 99, 7)) +>I1 : Symbol(I1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 33, 1)) + + var r9 = true ? i1 : x; // ok +>r9 : Symbol(r9, Decl(subtypesOfTypeParameterWithConstraints2.ts, 100, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 101, 7)) +>i1 : Symbol(i1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 99, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 98, 27)) + + var r9 = true ? x : i1; // ok +>r9 : Symbol(r9, Decl(subtypesOfTypeParameterWithConstraints2.ts, 100, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 101, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 98, 27)) +>i1 : Symbol(i1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 99, 7)) +} + +function f14(x: T) { +>f14 : Symbol(f14, Decl(subtypesOfTypeParameterWithConstraints2.ts, 102, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 104, 13)) +>C1 : Symbol(C1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 29)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 104, 27)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 104, 13)) + + var c1: C1; +>c1 : Symbol(c1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 105, 7)) +>C1 : Symbol(C1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 36, 29)) + + var r10 = true ? c1 : x; // ok +>r10 : Symbol(r10, Decl(subtypesOfTypeParameterWithConstraints2.ts, 106, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 107, 7)) +>c1 : Symbol(c1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 105, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 104, 27)) + + var r10 = true ? x : c1; // ok +>r10 : Symbol(r10, Decl(subtypesOfTypeParameterWithConstraints2.ts, 106, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 107, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 104, 27)) +>c1 : Symbol(c1, Decl(subtypesOfTypeParameterWithConstraints2.ts, 105, 7)) +} + +function f15>(x: T) { +>f15 : Symbol(f15, Decl(subtypesOfTypeParameterWithConstraints2.ts, 108, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 110, 13)) +>C2 : Symbol(C2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 25)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 110, 35)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 110, 13)) + + var c2: C2; +>c2 : Symbol(c2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 111, 7)) +>C2 : Symbol(C2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 37, 25)) + + var r12 = true ? c2 : x; // ok +>r12 : Symbol(r12, Decl(subtypesOfTypeParameterWithConstraints2.ts, 112, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 113, 7)) +>c2 : Symbol(c2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 111, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 110, 35)) + + var r12 = true ? x : c2; // ok +>r12 : Symbol(r12, Decl(subtypesOfTypeParameterWithConstraints2.ts, 112, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 113, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 110, 35)) +>c2 : Symbol(c2, Decl(subtypesOfTypeParameterWithConstraints2.ts, 111, 7)) +} + +function f16(x: T) { +>f16 : Symbol(f16, Decl(subtypesOfTypeParameterWithConstraints2.ts, 114, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 13)) +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 26)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 13)) + + var r13 = true ? E : x; // ok +>r13 : Symbol(r13, Decl(subtypesOfTypeParameterWithConstraints2.ts, 117, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 118, 7)) +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 26)) + + var r13 = true ? x : E; // ok +>r13 : Symbol(r13, Decl(subtypesOfTypeParameterWithConstraints2.ts, 117, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 118, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 26)) +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) + + var r14 = true ? E.A : x; // ok +>r14 : Symbol(r14, Decl(subtypesOfTypeParameterWithConstraints2.ts, 120, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 121, 7)) +>E.A : Symbol(E.A, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 8)) +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) +>A : Symbol(E.A, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 8)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 26)) + + var r14 = true ? x : E.A; // ok +>r14 : Symbol(r14, Decl(subtypesOfTypeParameterWithConstraints2.ts, 120, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 121, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 116, 26)) +>E.A : Symbol(E.A, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 8)) +>E : Symbol(E, Decl(subtypesOfTypeParameterWithConstraints2.ts, 38, 23)) +>A : Symbol(E.A, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 8)) +} + +function f17(x: T) { +>f17 : Symbol(f17, Decl(subtypesOfTypeParameterWithConstraints2.ts, 122, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 124, 13)) +>f : Symbol(f, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 12), Decl(subtypesOfTypeParameterWithConstraints2.ts, 40, 16)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 124, 33)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 124, 13)) + + var af: typeof f; +>af : Symbol(af, Decl(subtypesOfTypeParameterWithConstraints2.ts, 125, 7)) +>f : Symbol(f, Decl(subtypesOfTypeParameterWithConstraints2.ts, 39, 12), Decl(subtypesOfTypeParameterWithConstraints2.ts, 40, 16)) + + var r15 = true ? af : x; // ok +>r15 : Symbol(r15, Decl(subtypesOfTypeParameterWithConstraints2.ts, 126, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 127, 7)) +>af : Symbol(af, Decl(subtypesOfTypeParameterWithConstraints2.ts, 125, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 124, 33)) + + var r15 = true ? x : af; // ok +>r15 : Symbol(r15, Decl(subtypesOfTypeParameterWithConstraints2.ts, 126, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 127, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 124, 33)) +>af : Symbol(af, Decl(subtypesOfTypeParameterWithConstraints2.ts, 125, 7)) +} + +function f18(x: T) { +>f18 : Symbol(f18, Decl(subtypesOfTypeParameterWithConstraints2.ts, 128, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 130, 13)) +>c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 130, 33)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 130, 13)) + + var ac: typeof c; +>ac : Symbol(ac, Decl(subtypesOfTypeParameterWithConstraints2.ts, 131, 7)) +>c : Symbol(c, Decl(subtypesOfTypeParameterWithConstraints2.ts, 43, 1), Decl(subtypesOfTypeParameterWithConstraints2.ts, 44, 23)) + + var r16 = true ? ac : x; // ok +>r16 : Symbol(r16, Decl(subtypesOfTypeParameterWithConstraints2.ts, 132, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 133, 7)) +>ac : Symbol(ac, Decl(subtypesOfTypeParameterWithConstraints2.ts, 131, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 130, 33)) + + var r16 = true ? x : ac; // ok +>r16 : Symbol(r16, Decl(subtypesOfTypeParameterWithConstraints2.ts, 132, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 133, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 130, 33)) +>ac : Symbol(ac, Decl(subtypesOfTypeParameterWithConstraints2.ts, 131, 7)) +} + +function f19(x: T) { +>f19 : Symbol(f19, Decl(subtypesOfTypeParameterWithConstraints2.ts, 134, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 13)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 16)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 13)) + + function f17(a: U) { +>f17 : Symbol(f17, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 23)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 137, 17)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 13)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 137, 30)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 137, 17)) + + var r17 = true ? x : a; // ok +>r17 : Symbol(r17, Decl(subtypesOfTypeParameterWithConstraints2.ts, 138, 11), Decl(subtypesOfTypeParameterWithConstraints2.ts, 139, 11)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 16)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 137, 30)) + + var r17 = true ? a : x; // ok +>r17 : Symbol(r17, Decl(subtypesOfTypeParameterWithConstraints2.ts, 138, 11), Decl(subtypesOfTypeParameterWithConstraints2.ts, 139, 11)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 137, 30)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 16)) + } + + function f18(a: V) { +>f18 : Symbol(f18, Decl(subtypesOfTypeParameterWithConstraints2.ts, 140, 5)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 17)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 29)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 29)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 13)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 43)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 17)) + + var r18 = true ? x : a; // ok +>r18 : Symbol(r18, Decl(subtypesOfTypeParameterWithConstraints2.ts, 143, 11), Decl(subtypesOfTypeParameterWithConstraints2.ts, 144, 11)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 16)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 43)) + + var r18 = true ? a : x; // ok +>r18 : Symbol(r18, Decl(subtypesOfTypeParameterWithConstraints2.ts, 143, 11), Decl(subtypesOfTypeParameterWithConstraints2.ts, 144, 11)) +>a : Symbol(a, Decl(subtypesOfTypeParameterWithConstraints2.ts, 142, 43)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 136, 16)) + } +} + +function f20(x: T) { +>f20 : Symbol(f20, Decl(subtypesOfTypeParameterWithConstraints2.ts, 146, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 13)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 31)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 13)) + + var r19 = true ? new Object() : x; // ok +>r19 : Symbol(r19, Decl(subtypesOfTypeParameterWithConstraints2.ts, 149, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 150, 7)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 31)) + + var r19 = true ? x : new Object(); // ok +>r19 : Symbol(r19, Decl(subtypesOfTypeParameterWithConstraints2.ts, 149, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 150, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 148, 31)) +>Object : Symbol(Object, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +} + +function f21(x: T) { +>f21 : Symbol(f21, Decl(subtypesOfTypeParameterWithConstraints2.ts, 151, 1)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 13)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 31)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 13)) + + var r20 = true ? {} : x; // ok +>r20 : Symbol(r20, Decl(subtypesOfTypeParameterWithConstraints2.ts, 154, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 155, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 31)) + + var r20 = true ? x : {}; // ok +>r20 : Symbol(r20, Decl(subtypesOfTypeParameterWithConstraints2.ts, 154, 7), Decl(subtypesOfTypeParameterWithConstraints2.ts, 155, 7)) +>x : Symbol(x, Decl(subtypesOfTypeParameterWithConstraints2.ts, 153, 31)) +} diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.types b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.types new file mode 100644 index 00000000000..39c50bde355 --- /dev/null +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints2.types @@ -0,0 +1,690 @@ +=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints2.ts === +// checking whether other types are subtypes of type parameters with constraints + +function f1(x: T, y: U) { +>f1 : (x: T, y: U) => void +>T : T +>U : U +>U : U +>x : T +>T : T +>y : U +>U : U + + var r = true ? x : y; +>r : U +>true ? x : y : U +>true : boolean +>x : T +>y : U + + var r = true ? y : x; +>r : U +>true ? y : x : U +>true : boolean +>y : U +>x : T +} + +// V > U > T +function f2(x: T, y: U, z: V) { +>f2 : (x: T, y: U, z: V) => void +>T : T +>U : U +>U : U +>V : V +>V : V +>x : T +>T : T +>y : U +>U : U +>z : V +>V : V + + var r = true ? x : y; +>r : U +>true ? x : y : U +>true : boolean +>x : T +>y : U + + var r = true ? y : x; +>r : U +>true ? y : x : U +>true : boolean +>y : U +>x : T + + // ok + var r2 = true ? z : y; +>r2 : V +>true ? z : y : V +>true : boolean +>z : V +>y : U + + var r2 = true ? y : z; +>r2 : V +>true ? y : z : V +>true : boolean +>y : U +>z : V + + // ok + var r2a = true ? z : x; +>r2a : V +>true ? z : x : V +>true : boolean +>z : V +>x : T + + var r2b = true ? x : z; +>r2b : V +>true ? x : z : V +>true : boolean +>x : T +>z : V +} + +// Date > U > T +function f3(x: T, y: U) { +>f3 : (x: T, y: U) => void +>T : T +>U : U +>U : U +>Date : Date +>x : T +>T : T +>y : U +>U : U + + var r = true ? x : y; +>r : U +>true ? x : y : U +>true : boolean +>x : T +>y : U + + var r = true ? y : x; +>r : U +>true ? y : x : U +>true : boolean +>y : U +>x : T + + // ok + var r2 = true ? x : new Date(); +>r2 : Date +>true ? x : new Date() : Date +>true : boolean +>x : T +>new Date() : Date +>Date : DateConstructor + + var r2 = true ? new Date() : x; +>r2 : Date +>true ? new Date() : x : Date +>true : boolean +>new Date() : Date +>Date : DateConstructor +>x : T + + // ok + var r3 = true ? y : new Date(); +>r3 : Date +>true ? y : new Date() : Date +>true : boolean +>y : U +>new Date() : Date +>Date : DateConstructor + + var r3 = true ? new Date() : y; +>r3 : Date +>true ? new Date() : y : Date +>true : boolean +>new Date() : Date +>Date : DateConstructor +>y : U +} + + +interface I1 { foo: number; } +>I1 : I1 +>foo : number + +class C1 { foo: number; } +>C1 : C1 +>foo : number + +class C2 { foo: T; } +>C2 : C2 +>T : T +>foo : T +>T : T + +enum E { A } +>E : E +>A : E + +function f() { } +>f : typeof f + +module f { +>f : typeof f + + export var bar = 1; +>bar : number +>1 : number +} +class c { baz: string } +>c : c +>baz : string + +module c { +>c : typeof c + + export var bar = 1; +>bar : number +>1 : number +} + +function f4(x: T) { +>f4 : (x: T) => void +>T : T +>Number : Number +>x : T +>T : T + + var r0 = true ? x : null; // ok +>r0 : T +>true ? x : null : T +>true : boolean +>x : T +>null : null + + var r0 = true ? null : x; // ok +>r0 : T +>true ? null : x : T +>true : boolean +>null : null +>x : T + + var u: typeof undefined; +>u : any +>undefined : undefined + + var r0b = true ? u : x; // ok +>r0b : any +>true ? u : x : any +>true : boolean +>u : any +>x : T + + var r0b = true ? x : u; // ok +>r0b : any +>true ? x : u : any +>true : boolean +>x : T +>u : any +} + +function f5(x: T) { +>f5 : (x: T) => void +>T : T +>Number : Number +>x : T +>T : T + + var r1 = true ? 1 : x; // ok +>r1 : number | T +>true ? 1 : x : number | T +>true : boolean +>1 : number +>x : T + + var r1 = true ? x : 1; // ok +>r1 : number | T +>true ? x : 1 : T | number +>true : boolean +>x : T +>1 : number +} + +function f6(x: T) { +>f6 : (x: T) => void +>T : T +>String : String +>x : T +>T : T + + var r2 = true ? '' : x; // ok +>r2 : string | T +>true ? '' : x : string | T +>true : boolean +>'' : string +>x : T + + var r2 = true ? x : ''; // ok +>r2 : string | T +>true ? x : '' : T | string +>true : boolean +>x : T +>'' : string +} + +function f7(x: T) { +>f7 : (x: T) => void +>T : T +>Boolean : Boolean +>x : T +>T : T + + var r3 = true ? true : x; // ok +>r3 : boolean | T +>true ? true : x : boolean | T +>true : boolean +>true : boolean +>x : T + + var r3 = true ? x : true; // ok +>r3 : boolean | T +>true ? x : true : T | boolean +>true : boolean +>x : T +>true : boolean +} + +function f8(x: T) { +>f8 : (x: T) => void +>T : T +>Date : Date +>x : T +>T : T + + var r4 = true ? new Date() : x; // ok +>r4 : Date +>true ? new Date() : x : Date +>true : boolean +>new Date() : Date +>Date : DateConstructor +>x : T + + var r4 = true ? x : new Date(); // ok +>r4 : Date +>true ? x : new Date() : Date +>true : boolean +>x : T +>new Date() : Date +>Date : DateConstructor +} + +function f9(x: T) { +>f9 : (x: T) => void +>T : T +>RegExp : RegExp +>x : T +>T : T + + var r5 = true ? /1/ : x; // ok +>r5 : RegExp +>true ? /1/ : x : RegExp +>true : boolean +>/1/ : RegExp +>x : T + + var r5 = true ? x : /1/; // ok +>r5 : RegExp +>true ? x : /1/ : RegExp +>true : boolean +>x : T +>/1/ : RegExp +} + +function f10(x: T) { +>f10 : (x: T) => void +>T : T +>foo : number +>x : T +>T : T + + var r6 = true ? { foo: 1 } : x; // ok +>r6 : { foo: number; } +>true ? { foo: 1 } : x : { foo: number; } +>true : boolean +>{ foo: 1 } : { foo: number; } +>foo : number +>1 : number +>x : T + + var r6 = true ? x : { foo: 1 }; // ok +>r6 : { foo: number; } +>true ? x : { foo: 1 } : { foo: number; } +>true : boolean +>x : T +>{ foo: 1 } : { foo: number; } +>foo : number +>1 : number +} + +function f11 void>(x: T) { +>f11 : void>(x: T) => void +>T : T +>x : T +>T : T + + var r7 = true ? () => { } : x; // ok +>r7 : () => void +>true ? () => { } : x : () => void +>true : boolean +>() => { } : () => void +>x : T + + var r7 = true ? x : () => { }; // ok +>r7 : () => void +>true ? x : () => { } : () => void +>true : boolean +>x : T +>() => { } : () => void +} + +function f12(x: U) => U>(x: T) { +>f12 : (x: U) => U>(x: T) => void +>T : T +>U : U +>x : U +>U : U +>U : U +>x : T +>T : T + + var r8 = true ? (x: T) => { return x } : x; // ok +>r8 : (x: T) => T +>true ? (x: T) => { return x } : x : (x: T) => T +>true : boolean +>(x: T) => { return x } : (x: T) => T +>T : T +>x : T +>T : T +>x : T +>x : T + + var r8b = true ? x : (x: T) => { return x }; // ok, type parameters not identical across declarations +>r8b : (x: T) => T +>true ? x : (x: T) => { return x } : (x: T) => T +>true : boolean +>x : T +>(x: T) => { return x } : (x: T) => T +>T : T +>x : T +>T : T +>x : T +} + +function f13(x: T) { +>f13 : (x: T) => void +>T : T +>I1 : I1 +>x : T +>T : T + + var i1: I1; +>i1 : I1 +>I1 : I1 + + var r9 = true ? i1 : x; // ok +>r9 : I1 +>true ? i1 : x : I1 +>true : boolean +>i1 : I1 +>x : T + + var r9 = true ? x : i1; // ok +>r9 : I1 +>true ? x : i1 : I1 +>true : boolean +>x : T +>i1 : I1 +} + +function f14(x: T) { +>f14 : (x: T) => void +>T : T +>C1 : C1 +>x : T +>T : T + + var c1: C1; +>c1 : C1 +>C1 : C1 + + var r10 = true ? c1 : x; // ok +>r10 : C1 +>true ? c1 : x : C1 +>true : boolean +>c1 : C1 +>x : T + + var r10 = true ? x : c1; // ok +>r10 : C1 +>true ? x : c1 : C1 +>true : boolean +>x : T +>c1 : C1 +} + +function f15>(x: T) { +>f15 : >(x: T) => void +>T : T +>C2 : C2 +>x : T +>T : T + + var c2: C2; +>c2 : C2 +>C2 : C2 + + var r12 = true ? c2 : x; // ok +>r12 : C2 +>true ? c2 : x : C2 +>true : boolean +>c2 : C2 +>x : T + + var r12 = true ? x : c2; // ok +>r12 : C2 +>true ? x : c2 : C2 +>true : boolean +>x : T +>c2 : C2 +} + +function f16(x: T) { +>f16 : (x: T) => void +>T : T +>E : E +>x : T +>T : T + + var r13 = true ? E : x; // ok +>r13 : typeof E | T +>true ? E : x : typeof E | T +>true : boolean +>E : typeof E +>x : T + + var r13 = true ? x : E; // ok +>r13 : typeof E | T +>true ? x : E : T | typeof E +>true : boolean +>x : T +>E : typeof E + + var r14 = true ? E.A : x; // ok +>r14 : E +>true ? E.A : x : E +>true : boolean +>E.A : E +>E : typeof E +>A : E +>x : T + + var r14 = true ? x : E.A; // ok +>r14 : E +>true ? x : E.A : E +>true : boolean +>x : T +>E.A : E +>E : typeof E +>A : E +} + +function f17(x: T) { +>f17 : (x: T) => void +>T : T +>f : typeof f +>x : T +>T : T + + var af: typeof f; +>af : typeof f +>f : typeof f + + var r15 = true ? af : x; // ok +>r15 : typeof f +>true ? af : x : typeof f +>true : boolean +>af : typeof f +>x : T + + var r15 = true ? x : af; // ok +>r15 : typeof f +>true ? x : af : typeof f +>true : boolean +>x : T +>af : typeof f +} + +function f18(x: T) { +>f18 : (x: T) => void +>T : T +>c : typeof c +>x : T +>T : T + + var ac: typeof c; +>ac : typeof c +>c : typeof c + + var r16 = true ? ac : x; // ok +>r16 : typeof c +>true ? ac : x : typeof c +>true : boolean +>ac : typeof c +>x : T + + var r16 = true ? x : ac; // ok +>r16 : typeof c +>true ? x : ac : typeof c +>true : boolean +>x : T +>ac : typeof c +} + +function f19(x: T) { +>f19 : (x: T) => void +>T : T +>x : T +>T : T + + function f17(a: U) { +>f17 : (a: U) => void +>U : U +>T : T +>a : U +>U : U + + var r17 = true ? x : a; // ok +>r17 : T +>true ? x : a : T +>true : boolean +>x : T +>a : U + + var r17 = true ? a : x; // ok +>r17 : T +>true ? a : x : T +>true : boolean +>a : U +>x : T + } + + function f18(a: V) { +>f18 : (a: V) => void +>V : V +>U : U +>U : U +>T : T +>a : V +>V : V + + var r18 = true ? x : a; // ok +>r18 : T +>true ? x : a : T +>true : boolean +>x : T +>a : V + + var r18 = true ? a : x; // ok +>r18 : T +>true ? a : x : T +>true : boolean +>a : V +>x : T + } +} + +function f20(x: T) { +>f20 : (x: T) => void +>T : T +>Number : Number +>x : T +>T : T + + var r19 = true ? new Object() : x; // ok +>r19 : Object +>true ? new Object() : x : Object +>true : boolean +>new Object() : Object +>Object : ObjectConstructor +>x : T + + var r19 = true ? x : new Object(); // ok +>r19 : Object +>true ? x : new Object() : Object +>true : boolean +>x : T +>new Object() : Object +>Object : ObjectConstructor +} + +function f21(x: T) { +>f21 : (x: T) => void +>T : T +>Number : Number +>x : T +>T : T + + var r20 = true ? {} : x; // ok +>r20 : {} +>true ? {} : x : {} +>true : boolean +>{} : {} +>x : T + + var r20 = true ? x : {}; // ok +>r20 : {} +>true ? x : {} : {} +>true : boolean +>x : T +>{} : {} +} diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.errors.txt b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.errors.txt deleted file mode 100644 index 2a5fa5ad362..00000000000 --- a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.errors.txt +++ /dev/null @@ -1,21 +0,0 @@ -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints3.ts(3,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints3.ts (1 errors) ==== - // checking whether other types are subtypes of type parameters with constraints - - function f(t: T, u: U, v: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - // ok - var r = true ? t : u; - var r = true ? u : t; - - // ok - var r2 = true ? t : v; - var r2 = true ? v : t; - - // ok - var r3 = true ? v : u; - var r3 = true ? u : v; - } \ No newline at end of file diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.symbols b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.symbols new file mode 100644 index 00000000000..e0223d73574 --- /dev/null +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.symbols @@ -0,0 +1,49 @@ +=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints3.ts === +// checking whether other types are subtypes of type parameters with constraints + +function f(t: T, u: U, v: V) { +>f : Symbol(f, Decl(subtypesOfTypeParameterWithConstraints3.ts, 0, 0)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 11)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 23)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 23)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 26)) +>t : Symbol(t, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 30)) +>T : Symbol(T, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 11)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 35)) +>U : Symbol(U, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 23)) +>v : Symbol(v, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 41)) +>V : Symbol(V, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 26)) + + // ok + var r = true ? t : u; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints3.ts, 4, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 5, 7)) +>t : Symbol(t, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 30)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 35)) + + var r = true ? u : t; +>r : Symbol(r, Decl(subtypesOfTypeParameterWithConstraints3.ts, 4, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 5, 7)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 35)) +>t : Symbol(t, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 30)) + + // ok + var r2 = true ? t : v; +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints3.ts, 8, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 9, 7)) +>t : Symbol(t, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 30)) +>v : Symbol(v, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 41)) + + var r2 = true ? v : t; +>r2 : Symbol(r2, Decl(subtypesOfTypeParameterWithConstraints3.ts, 8, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 9, 7)) +>v : Symbol(v, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 41)) +>t : Symbol(t, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 30)) + + // ok + var r3 = true ? v : u; +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints3.ts, 12, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 13, 7)) +>v : Symbol(v, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 41)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 35)) + + var r3 = true ? u : v; +>r3 : Symbol(r3, Decl(subtypesOfTypeParameterWithConstraints3.ts, 12, 7), Decl(subtypesOfTypeParameterWithConstraints3.ts, 13, 7)) +>u : Symbol(u, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 35)) +>v : Symbol(v, Decl(subtypesOfTypeParameterWithConstraints3.ts, 2, 41)) +} diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.types b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.types new file mode 100644 index 00000000000..88c58998264 --- /dev/null +++ b/tests/baselines/reference/subtypesOfTypeParameterWithConstraints3.types @@ -0,0 +1,61 @@ +=== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithConstraints3.ts === +// checking whether other types are subtypes of type parameters with constraints + +function f(t: T, u: U, v: V) { +>f : (t: T, u: U, v: V) => void +>T : T +>U : U +>U : U +>V : V +>t : T +>T : T +>u : U +>U : U +>v : V +>V : V + + // ok + var r = true ? t : u; +>r : U +>true ? t : u : U +>true : boolean +>t : T +>u : U + + var r = true ? u : t; +>r : U +>true ? u : t : U +>true : boolean +>u : U +>t : T + + // ok + var r2 = true ? t : v; +>r2 : T | V +>true ? t : v : T | V +>true : boolean +>t : T +>v : V + + var r2 = true ? v : t; +>r2 : T | V +>true ? v : t : V | T +>true : boolean +>v : V +>t : T + + // ok + var r3 = true ? v : u; +>r3 : V | U +>true ? v : u : V | U +>true : boolean +>v : V +>u : U + + var r3 = true ? u : v; +>r3 : V | U +>true ? u : v : U | V +>true : boolean +>u : U +>v : V +} diff --git a/tests/baselines/reference/subtypesOfTypeParameterWithRecursiveConstraints.errors.txt b/tests/baselines/reference/subtypesOfTypeParameterWithRecursiveConstraints.errors.txt index 22b8c3cfb35..a7f9d3fad7f 100644 --- a/tests/baselines/reference/subtypesOfTypeParameterWithRecursiveConstraints.errors.txt +++ b/tests/baselines/reference/subtypesOfTypeParameterWithRecursiveConstraints.errors.txt @@ -1,109 +1,82 @@ -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(4,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(4,30): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(4,48): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(61,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(61,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(61,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(66,11): error TS2415: Class 'D2' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'T'. - Type 'Foo' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(66,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(66,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(66,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(68,9): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(71,11): error TS2415: Class 'D3' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'T'. - Type 'Foo' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(71,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(71,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(71,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(73,9): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(76,11): error TS2415: Class 'D4' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'T' is not assignable to type 'U'. - Type 'Foo' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(76,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(76,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(76,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(78,9): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(81,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(81,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(81,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(86,11): error TS2415: Class 'D6' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'V' is not assignable to type 'U'. - Type 'Foo' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(86,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(86,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(86,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(88,9): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(91,11): error TS2415: Class 'D7' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'T' is not assignable to type 'V'. - Type 'Foo' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(91,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(91,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(91,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(93,9): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(96,11): error TS2415: Class 'D8' incorrectly extends base class 'Base'. Types of property 'foo' are incompatible. Type 'U' is not assignable to type 'V'. - Type 'Foo' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(96,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(96,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(96,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + Type 'Foo' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(98,9): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(101,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(101,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(101,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(113,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(113,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(113,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(118,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(118,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(118,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(113,11): error TS2415: Class 'D1' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'T' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'U' is not assignable to type 'T'. + Type 'Foo' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(120,9): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(123,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(123,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(123,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(123,11): error TS2415: Class 'D3' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'V' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'V' is not assignable to type 'T'. + Type 'Foo' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(125,9): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'T'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(128,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(128,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(128,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(130,9): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(133,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(133,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(133,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(138,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(138,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(138,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(133,11): error TS2415: Class 'D5' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'U' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'T' is not assignable to type 'U'. + Type 'Foo' is not assignable to type 'U'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(138,11): error TS2415: Class 'D6' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'V' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'V' is not assignable to type 'U'. + Type 'Foo' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(140,9): error TS2411: Property 'foo' of type 'V' is not assignable to string index type 'U'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(143,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(143,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(143,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(143,11): error TS2415: Class 'D7' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'T' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'U' is not assignable to type 'V'. + Type 'Foo' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(145,9): error TS2411: Property 'foo' of type 'T' is not assignable to string index type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(148,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(148,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(148,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(148,11): error TS2415: Class 'D8' incorrectly extends base class 'Base2'. + Types of property 'foo' are incompatible. + Type 'U' is not assignable to type 'Foo'. + Type 'Foo' is not assignable to type 'Foo'. + Type 'T' is not assignable to type 'V'. + Type 'Foo' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(150,9): error TS2411: Property 'foo' of type 'U' is not assignable to string index type 'V'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(153,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(153,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts(153,50): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts (75 errors) ==== +==== tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOfTypeParameterWithRecursiveConstraints.ts (24 errors) ==== // checking whether other types are subtypes of type parameters with constraints class Foo { foo: T; } function f, U extends Foo, V extends Foo>(t: T, u: U, v: V) { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. // ok var r1 = true ? t : u; var r1 = true ? u : t; @@ -161,12 +134,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D1, U extends Foo, V extends Foo> extends Base { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: T } @@ -176,13 +143,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D2' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'U' is not assignable to type 'T'. -!!! error TS2415: Type 'Foo' is not assignable to type 'T'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'T'. [x: string]: T; foo: U ~~~~~~ @@ -194,13 +155,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D3' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'T'. -!!! error TS2415: Type 'Foo' is not assignable to type 'T'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'T'. [x: string]: T; foo: V ~~~~~~ @@ -212,13 +167,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D4' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'T' is not assignable to type 'U'. -!!! error TS2415: Type 'Foo' is not assignable to type 'U'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'U'. [x: string]: U; foo: T ~~~~~~ @@ -226,12 +175,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D5, U extends Foo, V extends Foo> extends Base { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: U } @@ -241,13 +184,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D6' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'V' is not assignable to type 'U'. -!!! error TS2415: Type 'Foo' is not assignable to type 'U'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'U'. [x: string]: U; foo: V ~~~~~~ @@ -259,13 +196,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D7' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'T' is not assignable to type 'V'. -!!! error TS2415: Type 'Foo' is not assignable to type 'V'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'V'. [x: string]: V; foo: T ~~~~~~ @@ -277,13 +208,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf !!! error TS2415: Class 'D8' incorrectly extends base class 'Base'. !!! error TS2415: Types of property 'foo' are incompatible. !!! error TS2415: Type 'U' is not assignable to type 'V'. -!!! error TS2415: Type 'Foo' is not assignable to type 'V'. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +!!! error TS2415: Type 'Foo' is not assignable to type 'V'. [x: string]: V; foo: U ~~~~~~ @@ -291,12 +216,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D9, U extends Foo, V extends Foo> extends Base { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: V } @@ -309,23 +228,18 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D1, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D1' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'T' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'U' is not assignable to type 'T'. +!!! error TS2415: Type 'Foo' is not assignable to type 'T'. [x: string]: T; foo: T } class D2, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: T; foo: U ~~~~~~ @@ -333,12 +247,13 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D3, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D3' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'V' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'V' is not assignable to type 'T'. +!!! error TS2415: Type 'Foo' is not assignable to type 'T'. [x: string]: T; foo: V ~~~~~~ @@ -346,12 +261,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D4, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: U; foo: T ~~~~~~ @@ -359,23 +268,25 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D5, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D5' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'U' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'T' is not assignable to type 'U'. +!!! error TS2415: Type 'Foo' is not assignable to type 'U'. [x: string]: U; foo: U } class D6, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D6' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'V' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'V' is not assignable to type 'U'. +!!! error TS2415: Type 'Foo' is not assignable to type 'U'. [x: string]: U; foo: V ~~~~~~ @@ -383,12 +294,13 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D7, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D7' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'T' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'U' is not assignable to type 'V'. +!!! error TS2415: Type 'Foo' is not assignable to type 'V'. [x: string]: V; foo: T ~~~~~~ @@ -396,12 +308,13 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D8, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~~ +!!! error TS2415: Class 'D8' incorrectly extends base class 'Base2'. +!!! error TS2415: Types of property 'foo' are incompatible. +!!! error TS2415: Type 'U' is not assignable to type 'Foo'. +!!! error TS2415: Type 'Foo' is not assignable to type 'Foo'. +!!! error TS2415: Type 'T' is not assignable to type 'V'. +!!! error TS2415: Type 'Foo' is not assignable to type 'V'. [x: string]: V; foo: U ~~~~~~ @@ -409,12 +322,6 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypesOf } class D9, U extends Foo, V extends Foo> extends Base2 { - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. [x: string]: V; foo: V } diff --git a/tests/baselines/reference/testTypings.errors.txt b/tests/baselines/reference/testTypings.errors.txt deleted file mode 100644 index 44480aa09fe..00000000000 --- a/tests/baselines/reference/testTypings.errors.txt +++ /dev/null @@ -1,19 +0,0 @@ -tests/cases/compiler/testTypings.ts(5,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/testTypings.ts (1 errors) ==== - interface IComparable { - compareTo(other: T); - } - - declare function sort>(items: U[]): U[]; - ~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - - - - - - - \ No newline at end of file diff --git a/tests/baselines/reference/testTypings.symbols b/tests/baselines/reference/testTypings.symbols new file mode 100644 index 00000000000..5e3074a9585 --- /dev/null +++ b/tests/baselines/reference/testTypings.symbols @@ -0,0 +1,27 @@ +=== tests/cases/compiler/testTypings.ts === +interface IComparable { +>IComparable : Symbol(IComparable, Decl(testTypings.ts, 0, 0)) +>T : Symbol(T, Decl(testTypings.ts, 0, 22)) + + compareTo(other: T); +>compareTo : Symbol(compareTo, Decl(testTypings.ts, 0, 26)) +>other : Symbol(other, Decl(testTypings.ts, 1, 13)) +>T : Symbol(T, Decl(testTypings.ts, 0, 22)) +} + +declare function sort>(items: U[]): U[]; +>sort : Symbol(sort, Decl(testTypings.ts, 2, 1)) +>U : Symbol(U, Decl(testTypings.ts, 4, 22)) +>IComparable : Symbol(IComparable, Decl(testTypings.ts, 0, 0)) +>U : Symbol(U, Decl(testTypings.ts, 4, 22)) +>items : Symbol(items, Decl(testTypings.ts, 4, 48)) +>U : Symbol(U, Decl(testTypings.ts, 4, 22)) +>U : Symbol(U, Decl(testTypings.ts, 4, 22)) + + + + + + + + diff --git a/tests/baselines/reference/testTypings.types b/tests/baselines/reference/testTypings.types new file mode 100644 index 00000000000..5883db8b8bb --- /dev/null +++ b/tests/baselines/reference/testTypings.types @@ -0,0 +1,27 @@ +=== tests/cases/compiler/testTypings.ts === +interface IComparable { +>IComparable : IComparable +>T : T + + compareTo(other: T); +>compareTo : (other: T) => any +>other : T +>T : T +} + +declare function sort>(items: U[]): U[]; +>sort : >(items: U[]) => U[] +>U : U +>IComparable : IComparable +>U : U +>items : U[] +>U : U +>U : U + + + + + + + + diff --git a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.errors.txt b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.errors.txt deleted file mode 100644 index 08cb5348c27..00000000000 --- a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.errors.txt +++ /dev/null @@ -1,17 +0,0 @@ -tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts(2,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts(2,42): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts (2 errors) ==== - - function fn(a: A, b: B, c: C) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - return [a, b, c]; - } - - var d = fn(new Date(), new Date(), new Date()); - var d: Date[]; // Should be OK (d should be Date[]) - \ No newline at end of file diff --git a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols new file mode 100644 index 00000000000..2d6270bbf5c --- /dev/null +++ b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.symbols @@ -0,0 +1,34 @@ +=== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts === + +function fn(a: A, b: B, c: C) { +>fn : Symbol(fn, Decl(typeArgumentInferenceTransitiveConstraints.ts, 0, 0)) +>A : Symbol(A, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 12)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>B : Symbol(B, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 27)) +>A : Symbol(A, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 12)) +>C : Symbol(C, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 40)) +>B : Symbol(B, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 27)) +>a : Symbol(a, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 54)) +>A : Symbol(A, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 12)) +>b : Symbol(b, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 59)) +>B : Symbol(B, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 27)) +>c : Symbol(c, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 65)) +>C : Symbol(C, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 40)) + + return [a, b, c]; +>a : Symbol(a, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 54)) +>b : Symbol(b, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 59)) +>c : Symbol(c, Decl(typeArgumentInferenceTransitiveConstraints.ts, 1, 65)) +} + +var d = fn(new Date(), new Date(), new Date()); +>d : Symbol(d, Decl(typeArgumentInferenceTransitiveConstraints.ts, 5, 3), Decl(typeArgumentInferenceTransitiveConstraints.ts, 6, 3)) +>fn : Symbol(fn, Decl(typeArgumentInferenceTransitiveConstraints.ts, 0, 0)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +var d: Date[]; // Should be OK (d should be Date[]) +>d : Symbol(d, Decl(typeArgumentInferenceTransitiveConstraints.ts, 5, 3), Decl(typeArgumentInferenceTransitiveConstraints.ts, 6, 3)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + diff --git a/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.types b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.types new file mode 100644 index 00000000000..6f772f10766 --- /dev/null +++ b/tests/baselines/reference/typeArgumentInferenceTransitiveConstraints.types @@ -0,0 +1,39 @@ +=== tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceTransitiveConstraints.ts === + +function fn(a: A, b: B, c: C) { +>fn : (a: A, b: B, c: C) => A[] +>A : A +>Date : Date +>B : B +>A : A +>C : C +>B : B +>a : A +>A : A +>b : B +>B : B +>c : C +>C : C + + return [a, b, c]; +>[a, b, c] : A[] +>a : A +>b : B +>c : C +} + +var d = fn(new Date(), new Date(), new Date()); +>d : Date[] +>fn(new Date(), new Date(), new Date()) : Date[] +>fn : (a: A, b: B, c: C) => A[] +>new Date() : Date +>Date : DateConstructor +>new Date() : Date +>Date : DateConstructor +>new Date() : Date +>Date : DateConstructor + +var d: Date[]; // Should be OK (d should be Date[]) +>d : Date[] +>Date : Date + diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt index 0c1e8cc4e97..e6de840ec54 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.errors.txt @@ -1,6 +1,6 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(11,17): error TS2344: Type '{}' does not satisfy the constraint 'number'. -tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(14,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(16,31): error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. +tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(16,23): error TS2344: Type 'number' does not satisfy the constraint 'string'. +tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(17,23): error TS2344: Type '{}' does not satisfy the constraint 'number'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(32,34): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(34,15): error TS2304: Cannot find name 'Window'. tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConstraints.ts(41,35): error TS2345: Argument of type '(x: string) => string' is not assignable to parameter of type '(x: number) => void'. @@ -43,13 +43,13 @@ tests/cases/conformance/expressions/functionCalls/typeArgumentInferenceWithConst // Generic call with multiple type parameters and only one used in parameter type annotation function someGenerics1(n: T, m: number) { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. someGenerics1(3, 4); // Valid someGenerics1(3, 4); // Error - ~ -!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'. + ~~~~~~ +!!! error TS2344: Type 'number' does not satisfy the constraint 'string'. someGenerics1(3, 4); // Error + ~~ +!!! error TS2344: Type '{}' does not satisfy the constraint 'number'. someGenerics1(3, 4); // Generic call with argument of function type whose parameter is of type parameter type diff --git a/tests/baselines/reference/typeParamExtendsOtherTypeParam.errors.txt b/tests/baselines/reference/typeParamExtendsOtherTypeParam.errors.txt index f943eaf5fa5..9b385964c71 100644 --- a/tests/baselines/reference/typeParamExtendsOtherTypeParam.errors.txt +++ b/tests/baselines/reference/typeParamExtendsOtherTypeParam.errors.txt @@ -1,14 +1,25 @@ -tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(1,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(2,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(12,26): error TS2344: Type '{ b: string; }' does not satisfy the constraint '{ a: string; }'. + Property 'a' is missing in type '{ b: string; }'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(13,26): error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. + Types of property 'a' are incompatible. + Type 'number' is not assignable to type 'string'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(14,26): error TS2344: Type '{ b: string; }' does not satisfy the constraint '{ a: string; }'. + Property 'a' is missing in type '{ b: string; }'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(15,26): error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. + Types of property 'a' are incompatible. + Type 'number' is not assignable to type 'string'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(16,37): error TS2344: Type '{ a: string; }' does not satisfy the constraint '{ a: string; b: number; }'. + Property 'b' is missing in type '{ a: string; }'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(17,37): error TS2344: Type '{ a: string; }' does not satisfy the constraint '{ a: string; b: number; }'. + Property 'b' is missing in type '{ a: string; }'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(28,15): error TS2344: Type 'I1' does not satisfy the constraint 'I2'. + Property 'b' is missing in type 'I1'. +tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(29,15): error TS2344: Type 'I1' does not satisfy the constraint 'I2'. -==== tests/cases/compiler/typeParamExtendsOtherTypeParam.ts (2 errors) ==== +==== tests/cases/compiler/typeParamExtendsOtherTypeParam.ts (8 errors) ==== class A { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. class B { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. data: A; } @@ -19,11 +30,31 @@ tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(2,27): error TS2313: Cons // Below should be in error var x1: A<{ a: string;}, { b: string }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ b: string; }' does not satisfy the constraint '{ a: string; }'. +!!! error TS2344: Property 'a' is missing in type '{ b: string; }'. var x2: A<{ a: string;}, { a: number }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. +!!! error TS2344: Types of property 'a' are incompatible. +!!! error TS2344: Type 'number' is not assignable to type 'string'. var x3: B<{ a: string;}, { b: string }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ b: string; }' does not satisfy the constraint '{ a: string; }'. +!!! error TS2344: Property 'a' is missing in type '{ b: string; }'. var x4: B<{ a: string;}, { a: number }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ a: number; }' does not satisfy the constraint '{ a: string; }'. +!!! error TS2344: Types of property 'a' are incompatible. +!!! error TS2344: Type 'number' is not assignable to type 'string'. var x5: A<{ a: string; b: number }, { a: string }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ a: string; }' does not satisfy the constraint '{ a: string; b: number; }'. +!!! error TS2344: Property 'b' is missing in type '{ a: string; }'. var x6: B<{ a: string; b: number }, { a: string }>; + ~~~~~~~~~~~~~ +!!! error TS2344: Type '{ a: string; }' does not satisfy the constraint '{ a: string; b: number; }'. +!!! error TS2344: Property 'b' is missing in type '{ a: string; }'. interface I1 { a: string; @@ -35,5 +66,10 @@ tests/cases/compiler/typeParamExtendsOtherTypeParam.ts(2,27): error TS2313: Cons } var x7: A; + ~~ +!!! error TS2344: Type 'I1' does not satisfy the constraint 'I2'. +!!! error TS2344: Property 'b' is missing in type 'I1'. var x8: B; + ~~ +!!! error TS2344: Type 'I1' does not satisfy the constraint 'I2'. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.errors.txt b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.errors.txt deleted file mode 100644 index b4f8e7544ff..00000000000 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.errors.txt +++ /dev/null @@ -1,35 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint.ts(4,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint.ts(21,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint.ts (2 errors) ==== - // using a type parameter as a constraint for a type parameter is valid - // no errors expected except illegal constraints - - function foo(x: T, y: U): U { return y; } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - var r = foo(1, 2); - var r = foo({}, 1); - - interface A { - foo: string; - } - interface B extends A { - bar: number; - } - var a: A; - var b: B; - - var r2 = foo(a, b); - var r3 = foo({ x: 1 }, { x: 2, y: 3 }); - - function foo2(x: T, y: U) { return y; } - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo2(1, ''); - foo2({}, { length: 2 }); - foo2(1, { width: 3, length: 2 }); - foo2(1, []); - foo2(1, ['']); \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols new file mode 100644 index 00000000000..569b37e64d1 --- /dev/null +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.symbols @@ -0,0 +1,88 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint.ts === +// using a type parameter as a constraint for a type parameter is valid +// no errors expected except illegal constraints + +function foo(x: T, y: U): U { return y; } +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 13)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 15)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 13)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 29)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 13)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 34)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 15)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 15)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint.ts, 3, 34)) + +var r = foo(1, 2); +>r : Symbol(r, Decl(typeParameterAsTypeParameterConstraint.ts, 5, 3), Decl(typeParameterAsTypeParameterConstraint.ts, 6, 3)) +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 0, 0)) + +var r = foo({}, 1); +>r : Symbol(r, Decl(typeParameterAsTypeParameterConstraint.ts, 5, 3), Decl(typeParameterAsTypeParameterConstraint.ts, 6, 3)) +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 0, 0)) + +interface A { +>A : Symbol(A, Decl(typeParameterAsTypeParameterConstraint.ts, 6, 19)) + + foo: string; +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 8, 13)) +} +interface B extends A { +>B : Symbol(B, Decl(typeParameterAsTypeParameterConstraint.ts, 10, 1)) +>A : Symbol(A, Decl(typeParameterAsTypeParameterConstraint.ts, 6, 19)) + + bar: number; +>bar : Symbol(bar, Decl(typeParameterAsTypeParameterConstraint.ts, 11, 23)) +} +var a: A; +>a : Symbol(a, Decl(typeParameterAsTypeParameterConstraint.ts, 14, 3)) +>A : Symbol(A, Decl(typeParameterAsTypeParameterConstraint.ts, 6, 19)) + +var b: B; +>b : Symbol(b, Decl(typeParameterAsTypeParameterConstraint.ts, 15, 3)) +>B : Symbol(B, Decl(typeParameterAsTypeParameterConstraint.ts, 10, 1)) + +var r2 = foo(a, b); +>r2 : Symbol(r2, Decl(typeParameterAsTypeParameterConstraint.ts, 17, 3)) +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 0, 0)) +>a : Symbol(a, Decl(typeParameterAsTypeParameterConstraint.ts, 14, 3)) +>b : Symbol(b, Decl(typeParameterAsTypeParameterConstraint.ts, 15, 3)) + +var r3 = foo({ x: 1 }, { x: 2, y: 3 }); +>r3 : Symbol(r3, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 3)) +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint.ts, 0, 0)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 14)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 24)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 30)) + +function foo2(x: T, y: U) { return y; } +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 14)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 16)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 28)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 14)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 42)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 14)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 47)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 16)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint.ts, 20, 47)) + +foo2(1, ''); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) + +foo2({}, { length: 2 }); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint.ts, 22, 10)) + +foo2(1, { width: 3, length: 2 }); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) +>width : Symbol(width, Decl(typeParameterAsTypeParameterConstraint.ts, 23, 9)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint.ts, 23, 19)) + +foo2(1, []); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) + +foo2(1, ['']); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint.ts, 18, 39)) + diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types new file mode 100644 index 00000000000..c5f15f1ba55 --- /dev/null +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint.types @@ -0,0 +1,120 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint.ts === +// using a type parameter as a constraint for a type parameter is valid +// no errors expected except illegal constraints + +function foo(x: T, y: U): U { return y; } +>foo : (x: T, y: U) => U +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>U : U +>y : U + +var r = foo(1, 2); +>r : number +>foo(1, 2) : number +>foo : (x: T, y: U) => U +>1 : number +>2 : number + +var r = foo({}, 1); +>r : number +>foo({}, 1) : number +>foo : (x: T, y: U) => U +>{} : {} +>1 : number + +interface A { +>A : A + + foo: string; +>foo : string +} +interface B extends A { +>B : B +>A : A + + bar: number; +>bar : number +} +var a: A; +>a : A +>A : A + +var b: B; +>b : B +>B : B + +var r2 = foo(a, b); +>r2 : B +>foo(a, b) : B +>foo : (x: T, y: U) => U +>a : A +>b : B + +var r3 = foo({ x: 1 }, { x: 2, y: 3 }); +>r3 : { x: number; y: number; } +>foo({ x: 1 }, { x: 2, y: 3 }) : { x: number; y: number; } +>foo : (x: T, y: U) => U +>{ x: 1 } : { x: number; } +>x : number +>1 : number +>{ x: 2, y: 3 } : { x: number; y: number; } +>x : number +>2 : number +>y : number +>3 : number + +function foo2(x: T, y: U) { return y; } +>foo2 : (x: T, y: U) => U +>T : T +>U : U +>length : T +>T : T +>x : T +>T : T +>y : U +>U : U +>y : U + +foo2(1, ''); +>foo2(1, '') : string +>foo2 : (x: T, y: U) => U +>1 : number +>'' : string + +foo2({}, { length: 2 }); +>foo2({}, { length: 2 }) : { length: number; } +>foo2 : (x: T, y: U) => U +>{} : {} +>{ length: 2 } : { length: number; } +>length : number +>2 : number + +foo2(1, { width: 3, length: 2 }); +>foo2(1, { width: 3, length: 2 }) : { width: number; length: number; } +>foo2 : (x: T, y: U) => U +>1 : number +>{ width: 3, length: 2 } : { width: number; length: number; } +>width : number +>3 : number +>length : number +>2 : number + +foo2(1, []); +>foo2(1, []) : any[] +>foo2 : (x: T, y: U) => U +>1 : number +>[] : undefined[] + +foo2(1, ['']); +>foo2(1, ['']) : string[] +>foo2 : (x: T, y: U) => U +>1 : number +>[''] : string[] +>'' : string + diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.errors.txt b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.errors.txt deleted file mode 100644 index 8652bb7aee5..00000000000 --- a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.errors.txt +++ /dev/null @@ -1,27 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint2.ts(4,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint2.ts(15,18): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint2.ts (2 errors) ==== - // using a type parameter as a constraint for a type parameter is invalid - // these should be errors unless otherwise noted - - function foo(x: T, y: U): U { return y; } // this is now an error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - foo(1, ''); - foo(1, {}); - - interface NumberVariant extends Number { - x: number; - } - var n: NumberVariant; - var r3 = foo(1, n); - - function foo2(x: T, y: U) { return y; } // this is now an error - ~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - foo2(1, { length: '' }); - foo2(1, { length: {} }); - foo2([], ['']); \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.symbols b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.symbols new file mode 100644 index 00000000000..b6fde452280 --- /dev/null +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.symbols @@ -0,0 +1,61 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint2.ts === +// using a type parameter as a constraint for a type parameter is invalid +// these should be errors unless otherwise noted + +function foo(x: T, y: U): U { return y; } // this is now an error +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 13)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 15)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 13)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 29)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 13)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 34)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 15)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 15)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint2.ts, 3, 34)) + +foo(1, ''); +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint2.ts, 0, 0)) + +foo(1, {}); +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint2.ts, 0, 0)) + +interface NumberVariant extends Number { +>NumberVariant : Symbol(NumberVariant, Decl(typeParameterAsTypeParameterConstraint2.ts, 6, 11)) +>Number : Symbol(Number, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + + x: number; +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint2.ts, 8, 40)) +} +var n: NumberVariant; +>n : Symbol(n, Decl(typeParameterAsTypeParameterConstraint2.ts, 11, 3)) +>NumberVariant : Symbol(NumberVariant, Decl(typeParameterAsTypeParameterConstraint2.ts, 6, 11)) + +var r3 = foo(1, n); +>r3 : Symbol(r3, Decl(typeParameterAsTypeParameterConstraint2.ts, 12, 3)) +>foo : Symbol(foo, Decl(typeParameterAsTypeParameterConstraint2.ts, 0, 0)) +>n : Symbol(n, Decl(typeParameterAsTypeParameterConstraint2.ts, 11, 3)) + +function foo2(x: T, y: U) { return y; } // this is now an error +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint2.ts, 12, 19)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 14)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 16)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 28)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 14)) +>x : Symbol(x, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 42)) +>T : Symbol(T, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 14)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 47)) +>U : Symbol(U, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 16)) +>y : Symbol(y, Decl(typeParameterAsTypeParameterConstraint2.ts, 14, 47)) + +foo2(1, { length: '' }); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint2.ts, 12, 19)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint2.ts, 15, 9)) + +foo2(1, { length: {} }); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint2.ts, 12, 19)) +>length : Symbol(length, Decl(typeParameterAsTypeParameterConstraint2.ts, 16, 9)) + +foo2([], ['']); +>foo2 : Symbol(foo2, Decl(typeParameterAsTypeParameterConstraint2.ts, 12, 19)) + diff --git a/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types new file mode 100644 index 00000000000..e73cdaeda53 --- /dev/null +++ b/tests/baselines/reference/typeParameterAsTypeParameterConstraint2.types @@ -0,0 +1,81 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/typeParameterAsTypeParameterConstraint2.ts === +// using a type parameter as a constraint for a type parameter is invalid +// these should be errors unless otherwise noted + +function foo(x: T, y: U): U { return y; } // this is now an error +>foo : (x: T, y: U) => U +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>U : U +>y : U + +foo(1, ''); +>foo(1, '') : any +>foo : (x: T, y: U) => U +>1 : number +>'' : string + +foo(1, {}); +>foo(1, {}) : any +>foo : (x: T, y: U) => U +>1 : number +>{} : {} + +interface NumberVariant extends Number { +>NumberVariant : NumberVariant +>Number : Number + + x: number; +>x : number +} +var n: NumberVariant; +>n : NumberVariant +>NumberVariant : NumberVariant + +var r3 = foo(1, n); +>r3 : any +>foo(1, n) : any +>foo : (x: T, y: U) => U +>1 : number +>n : NumberVariant + +function foo2(x: T, y: U) { return y; } // this is now an error +>foo2 : (x: T, y: U) => U +>T : T +>U : U +>length : T +>T : T +>x : T +>T : T +>y : U +>U : U +>y : U + +foo2(1, { length: '' }); +>foo2(1, { length: '' }) : { length: any; } +>foo2 : (x: T, y: U) => U +>1 : number +>{ length: '' } : { length: string; } +>length : string +>'' : string + +foo2(1, { length: {} }); +>foo2(1, { length: {} }) : { length: any; } +>foo2 : (x: T, y: U) => U +>1 : number +>{ length: {} } : { length: {}; } +>length : {} +>{} : {} + +foo2([], ['']); +>foo2([], ['']) : { length: any; } +>foo2 : (x: T, y: U) => U +>[] : undefined[] +>[''] : string[] +>'' : string + diff --git a/tests/baselines/reference/typeParameterAssignability2.errors.txt b/tests/baselines/reference/typeParameterAssignability2.errors.txt index ab8803e0478..e6159fd7135 100644 --- a/tests/baselines/reference/typeParameterAssignability2.errors.txt +++ b/tests/baselines/reference/typeParameterAssignability2.errors.txt @@ -1,116 +1,78 @@ -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(3,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(4,5): error TS2322: Type 'U' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(5,5): error TS2322: Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(8,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(9,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(10,5): error TS2322: Type 'T' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(13,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(13,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(14,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(15,5): error TS2322: Type 'T' is not assignable to type 'U'. + Type 'V' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(17,5): error TS2322: Type 'V' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(18,5): error TS2322: Type 'T' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(20,5): error TS2322: Type 'V' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(21,5): error TS2322: Type 'U' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(24,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(24,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(25,5): error TS2322: Type 'U' is not assignable to type 'T'. + Type 'V' is not assignable to type 'T'. + Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(26,5): error TS2322: Type 'V' is not assignable to type 'T'. Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(27,5): error TS2322: Type 'Date' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(29,5): error TS2322: Type 'T' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(30,5): error TS2322: Type 'V' is not assignable to type 'U'. Type 'Date' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(31,5): error TS2322: Type 'Date' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(33,5): error TS2322: Type 'T' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(34,5): error TS2322: Type 'U' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(35,5): error TS2322: Type 'Date' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(38,5): error TS2322: Type 'T' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(39,5): error TS2322: Type 'U' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(44,31): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(44,44): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(45,5): error TS2322: Type 'U' is not assignable to type 'T'. + Type 'V' is not assignable to type 'T'. + Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(46,5): error TS2322: Type 'V' is not assignable to type 'T'. Type 'Date' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(47,5): error TS2322: Type 'Date' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(49,5): error TS2322: Type 'T' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(50,5): error TS2322: Type 'V' is not assignable to type 'U'. Type 'Date' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(51,5): error TS2322: Type 'Date' is not assignable to type 'U'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(53,5): error TS2322: Type 'T' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(54,5): error TS2322: Type 'U' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(55,5): error TS2322: Type 'Date' is not assignable to type 'V'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(58,5): error TS2322: Type 'T' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(59,5): error TS2322: Type 'U' is not assignable to type 'Date'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(63,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(64,5): error TS2322: Type 'U' is not assignable to type 'T'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(65,5): error TS2322: Type 'V' is not assignable to type 'T'. -tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(67,5): error TS2322: Type 'T' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(68,5): error TS2322: Type 'V' is not assignable to type 'U'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(70,5): error TS2322: Type 'T' is not assignable to type 'V'. + Type 'U' is not assignable to type 'V'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts(71,5): error TS2322: Type 'U' is not assignable to type 'V'. -==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts (47 errors) ==== +==== tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typeParameterAssignability2.ts (22 errors) ==== // type parameters are not assignable to one another unless directly or indirectly constrained to one another function foo(t: T, u: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. u = t; // ok ~ !!! error TS2322: Type 'T' is not assignable to type 'U'. } function foo2(t: T, u: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. u = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. } function foo3(t: T, u: U, v: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type 'V' is not assignable to type 'T'. u = t; - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. t = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'T'. v = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'V'. u = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'U'. v = u; // ok - ~ -!!! error TS2322: Type 'U' is not assignable to type 'V'. } function foo4(t: T, u: U, v: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type 'V' is not assignable to type 'T'. +!!! error TS2322: Type 'Date' is not assignable to type 'T'. t = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'T'. @@ -120,8 +82,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara !!! error TS2322: Type 'Date' is not assignable to type 'T'. u = t; - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. u = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'U'. @@ -131,34 +91,24 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara !!! error TS2322: Type 'Date' is not assignable to type 'U'. v = t; - ~ -!!! error TS2322: Type 'T' is not assignable to type 'V'. v = u; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'V'. v = new Date(); // ok ~ !!! error TS2322: Type 'Date' is not assignable to type 'V'. var d: Date; d = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'Date'. d = u; // ok - ~ -!!! error TS2322: Type 'U' is not assignable to type 'Date'. d = v; // ok } // same as foo4 with different type parameter ordering function foo5(t: T, u: U, v: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. +!!! error TS2322: Type 'V' is not assignable to type 'T'. +!!! error TS2322: Type 'Date' is not assignable to type 'T'. t = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'T'. @@ -168,8 +118,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara !!! error TS2322: Type 'Date' is not assignable to type 'T'. u = t; - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. u = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'U'. @@ -179,28 +127,18 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara !!! error TS2322: Type 'Date' is not assignable to type 'U'. v = t; - ~ -!!! error TS2322: Type 'T' is not assignable to type 'V'. v = u; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'V'. v = new Date(); // ok ~ !!! error TS2322: Type 'Date' is not assignable to type 'V'. var d: Date; d = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'Date'. d = u; // ok - ~ -!!! error TS2322: Type 'U' is not assignable to type 'Date'. d = v; // ok } function foo6(t: T, u: U, v: V) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. t = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'T'. @@ -209,8 +147,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara !!! error TS2322: Type 'V' is not assignable to type 'T'. u = t; // ok - ~ -!!! error TS2322: Type 'T' is not assignable to type 'U'. u = v; // error ~ !!! error TS2322: Type 'V' is not assignable to type 'U'. @@ -218,6 +154,7 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/typePara v = t; // error ~ !!! error TS2322: Type 'T' is not assignable to type 'V'. +!!! error TS2322: Type 'U' is not assignable to type 'V'. v = u; // error ~ !!! error TS2322: Type 'U' is not assignable to type 'V'. diff --git a/tests/baselines/reference/typeParameterAssignmentWithConstraints.errors.txt b/tests/baselines/reference/typeParameterAssignmentWithConstraints.errors.txt deleted file mode 100644 index 3ada2e3c375..00000000000 --- a/tests/baselines/reference/typeParameterAssignmentWithConstraints.errors.txt +++ /dev/null @@ -1,14 +0,0 @@ -tests/cases/compiler/typeParameterAssignmentWithConstraints.ts(1,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/typeParameterAssignmentWithConstraints.ts(4,5): error TS2322: Type 'B' is not assignable to type 'A'. - - -==== tests/cases/compiler/typeParameterAssignmentWithConstraints.ts (2 errors) ==== - function f() { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a: A; - var b: B; - a = b; // Error: Can't convert B to A - ~ -!!! error TS2322: Type 'B' is not assignable to type 'A'. - } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAssignmentWithConstraints.symbols b/tests/baselines/reference/typeParameterAssignmentWithConstraints.symbols new file mode 100644 index 00000000000..c5372354532 --- /dev/null +++ b/tests/baselines/reference/typeParameterAssignmentWithConstraints.symbols @@ -0,0 +1,19 @@ +=== tests/cases/compiler/typeParameterAssignmentWithConstraints.ts === +function f() { +>f : Symbol(f, Decl(typeParameterAssignmentWithConstraints.ts, 0, 0)) +>A : Symbol(A, Decl(typeParameterAssignmentWithConstraints.ts, 0, 11)) +>B : Symbol(B, Decl(typeParameterAssignmentWithConstraints.ts, 0, 13)) +>A : Symbol(A, Decl(typeParameterAssignmentWithConstraints.ts, 0, 11)) + + var a: A; +>a : Symbol(a, Decl(typeParameterAssignmentWithConstraints.ts, 1, 7)) +>A : Symbol(A, Decl(typeParameterAssignmentWithConstraints.ts, 0, 11)) + + var b: B; +>b : Symbol(b, Decl(typeParameterAssignmentWithConstraints.ts, 2, 7)) +>B : Symbol(B, Decl(typeParameterAssignmentWithConstraints.ts, 0, 13)) + + a = b; // Error: Can't convert B to A +>a : Symbol(a, Decl(typeParameterAssignmentWithConstraints.ts, 1, 7)) +>b : Symbol(b, Decl(typeParameterAssignmentWithConstraints.ts, 2, 7)) +} diff --git a/tests/baselines/reference/typeParameterAssignmentWithConstraints.types b/tests/baselines/reference/typeParameterAssignmentWithConstraints.types new file mode 100644 index 00000000000..fc7f7e31830 --- /dev/null +++ b/tests/baselines/reference/typeParameterAssignmentWithConstraints.types @@ -0,0 +1,20 @@ +=== tests/cases/compiler/typeParameterAssignmentWithConstraints.ts === +function f() { +>f : () => void +>A : A +>B : B +>A : A + + var a: A; +>a : A +>A : A + + var b: B; +>b : B +>B : B + + a = b; // Error: Can't convert B to A +>a = b : B +>a : A +>b : B +} diff --git a/tests/baselines/reference/typeParameterDirectlyConstrainedToItself.errors.txt b/tests/baselines/reference/typeParameterDirectlyConstrainedToItself.errors.txt index 496d0f3f55a..540ad8346a1 100644 --- a/tests/baselines/reference/typeParameterDirectlyConstrainedToItself.errors.txt +++ b/tests/baselines/reference/typeParameterDirectlyConstrainedToItself.errors.txt @@ -1,51 +1,51 @@ -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(3,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(4,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(6,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(7,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(9,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(10,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(13,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(14,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(17,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(18,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(3,19): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(4,23): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(6,23): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(7,27): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(9,22): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(10,26): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(13,16): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(14,19): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(17,20): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts(18,24): error TS2313: Type parameter 'U' has a circular constraint. ==== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterDirectlyConstrainedToItself.ts (10 errors) ==== // all of the below should be errors class C { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. class C2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. interface I { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. interface I2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. function f() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. function f2() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. var a: { (): void; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. (): void; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. } var b = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. var b2 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. \ No newline at end of file + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterHasSelfAsConstraint.errors.txt b/tests/baselines/reference/typeParameterHasSelfAsConstraint.errors.txt index 409aa5ebfb6..b459534080f 100644 --- a/tests/baselines/reference/typeParameterHasSelfAsConstraint.errors.txt +++ b/tests/baselines/reference/typeParameterHasSelfAsConstraint.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/typeParameterHasSelfAsConstraint.ts(1,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/compiler/typeParameterHasSelfAsConstraint.ts(1,24): error TS2313: Type parameter 'T' has a circular constraint. tests/cases/compiler/typeParameterHasSelfAsConstraint.ts(2,12): error TS2322: Type 'T' is not assignable to type 'number'. ==== tests/cases/compiler/typeParameterHasSelfAsConstraint.ts (2 errors) ==== function foo(x: T): number { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. return x; ~ !!! error TS2322: Type 'T' is not assignable to type 'number'. diff --git a/tests/baselines/reference/typeParameterInConstraint1.errors.txt b/tests/baselines/reference/typeParameterInConstraint1.errors.txt deleted file mode 100644 index ee8e9dcf37f..00000000000 --- a/tests/baselines/reference/typeParameterInConstraint1.errors.txt +++ /dev/null @@ -1,8 +0,0 @@ -tests/cases/compiler/typeParameterInConstraint1.ts(1,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/typeParameterInConstraint1.ts (1 errors) ==== - class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterInConstraint1.symbols b/tests/baselines/reference/typeParameterInConstraint1.symbols new file mode 100644 index 00000000000..284e73911cf --- /dev/null +++ b/tests/baselines/reference/typeParameterInConstraint1.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/typeParameterInConstraint1.ts === +class C { +>C : Symbol(C, Decl(typeParameterInConstraint1.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterInConstraint1.ts, 0, 8)) +>U : Symbol(U, Decl(typeParameterInConstraint1.ts, 0, 10)) +>T : Symbol(T, Decl(typeParameterInConstraint1.ts, 0, 8)) +} diff --git a/tests/baselines/reference/typeParameterInConstraint1.types b/tests/baselines/reference/typeParameterInConstraint1.types new file mode 100644 index 00000000000..5163f4a053c --- /dev/null +++ b/tests/baselines/reference/typeParameterInConstraint1.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/typeParameterInConstraint1.ts === +class C { +>C : C +>T : T +>U : U +>T : T +} diff --git a/tests/baselines/reference/typeParameterIndirectlyConstrainedToItself.errors.txt b/tests/baselines/reference/typeParameterIndirectlyConstrainedToItself.errors.txt index 2b969daf7ee..4cfa9da2133 100644 --- a/tests/baselines/reference/typeParameterIndirectlyConstrainedToItself.errors.txt +++ b/tests/baselines/reference/typeParameterIndirectlyConstrainedToItself.errors.txt @@ -1,105 +1,102 @@ -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(1,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,36): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(4,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(4,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,40): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(7,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(7,25): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,39): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(11,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(11,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,6): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,19): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,32): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(15,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(15,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,37): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(18,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(18,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(18,35): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(1,19): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(1,32): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,20): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,33): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(2,46): error TS2313: Type parameter 'V' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(4,23): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(4,36): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,24): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,37): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(5,50): error TS2313: Type parameter 'V' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(7,22): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(7,35): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,23): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,36): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(8,49): error TS2313: Type parameter 'V' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(11,16): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(11,29): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,16): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,29): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(12,42): error TS2313: Type parameter 'V' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(15,20): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(15,33): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,21): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,34): error TS2313: Type parameter 'U' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(16,47): error TS2313: Type parameter 'V' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(18,32): error TS2313: Type parameter 'T' has a circular constraint. +tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts(18,45): error TS2313: Type parameter 'V' has a circular constraint. -==== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts (28 errors) ==== +==== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterIndirectlyConstrainedToItself.ts (27 errors) ==== class C { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. class C2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. interface I { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. interface I2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. function f() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. function f2() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. var a: { (): void; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. (): void; - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. } var b = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. var b2 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'U' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. class D { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. \ No newline at end of file + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. + ~ +!!! error TS2313: Type parameter 'V' has a circular constraint. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterOrderReversal.errors.txt b/tests/baselines/reference/typeParameterOrderReversal.errors.txt deleted file mode 100644 index cb404c8e713..00000000000 --- a/tests/baselines/reference/typeParameterOrderReversal.errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -tests/cases/compiler/typeParameterOrderReversal.ts(6,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/typeParameterOrderReversal.ts(7,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/compiler/typeParameterOrderReversal.ts (2 errors) ==== - interface X { - n: T; - } - - // Only difference here is order of type parameters - function uFirst, T>(x: U) { } - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function tFirst>(x: U) { } - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var z: X = null; - - // Both of these should be allowed - uFirst(z); - tFirst(z); - \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterOrderReversal.symbols b/tests/baselines/reference/typeParameterOrderReversal.symbols new file mode 100644 index 00000000000..6b17ac1da55 --- /dev/null +++ b/tests/baselines/reference/typeParameterOrderReversal.symbols @@ -0,0 +1,42 @@ +=== tests/cases/compiler/typeParameterOrderReversal.ts === +interface X { +>X : Symbol(X, Decl(typeParameterOrderReversal.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 0, 12)) + + n: T; +>n : Symbol(n, Decl(typeParameterOrderReversal.ts, 0, 16)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 0, 12)) +} + +// Only difference here is order of type parameters +function uFirst, T>(x: U) { } +>uFirst : Symbol(uFirst, Decl(typeParameterOrderReversal.ts, 2, 1)) +>U : Symbol(U, Decl(typeParameterOrderReversal.ts, 5, 16)) +>X : Symbol(X, Decl(typeParameterOrderReversal.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 5, 31)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 5, 31)) +>x : Symbol(x, Decl(typeParameterOrderReversal.ts, 5, 35)) +>U : Symbol(U, Decl(typeParameterOrderReversal.ts, 5, 16)) + +function tFirst>(x: U) { } +>tFirst : Symbol(tFirst, Decl(typeParameterOrderReversal.ts, 5, 44)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 6, 16)) +>U : Symbol(U, Decl(typeParameterOrderReversal.ts, 6, 18)) +>X : Symbol(X, Decl(typeParameterOrderReversal.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterOrderReversal.ts, 6, 16)) +>x : Symbol(x, Decl(typeParameterOrderReversal.ts, 6, 35)) +>U : Symbol(U, Decl(typeParameterOrderReversal.ts, 6, 18)) + +var z: X = null; +>z : Symbol(z, Decl(typeParameterOrderReversal.ts, 7, 3)) +>X : Symbol(X, Decl(typeParameterOrderReversal.ts, 0, 0)) + +// Both of these should be allowed +uFirst(z); +>uFirst : Symbol(uFirst, Decl(typeParameterOrderReversal.ts, 2, 1)) +>z : Symbol(z, Decl(typeParameterOrderReversal.ts, 7, 3)) + +tFirst(z); +>tFirst : Symbol(tFirst, Decl(typeParameterOrderReversal.ts, 5, 44)) +>z : Symbol(z, Decl(typeParameterOrderReversal.ts, 7, 3)) + diff --git a/tests/baselines/reference/typeParameterOrderReversal.types b/tests/baselines/reference/typeParameterOrderReversal.types new file mode 100644 index 00000000000..9b09ea5d6c9 --- /dev/null +++ b/tests/baselines/reference/typeParameterOrderReversal.types @@ -0,0 +1,45 @@ +=== tests/cases/compiler/typeParameterOrderReversal.ts === +interface X { +>X : X +>T : T + + n: T; +>n : T +>T : T +} + +// Only difference here is order of type parameters +function uFirst, T>(x: U) { } +>uFirst : , T>(x: U) => void +>U : U +>X : X +>T : T +>T : T +>x : U +>U : U + +function tFirst>(x: U) { } +>tFirst : >(x: U) => void +>T : T +>U : U +>X : X +>T : T +>x : U +>U : U + +var z: X = null; +>z : X +>X : X +>null : null + +// Both of these should be allowed +uFirst(z); +>uFirst(z) : void +>uFirst : , T>(x: U) => void +>z : X + +tFirst(z); +>tFirst(z) : void +>tFirst : >(x: U) => void +>z : X + diff --git a/tests/baselines/reference/typeParameterUsedAsConstraint.errors.txt b/tests/baselines/reference/typeParameterUsedAsConstraint.errors.txt deleted file mode 100644 index c38900ca00c..00000000000 --- a/tests/baselines/reference/typeParameterUsedAsConstraint.errors.txt +++ /dev/null @@ -1,158 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(1,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(2,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(3,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(4,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(5,10): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(5,23): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(6,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(6,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(8,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(9,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(10,30): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(11,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(12,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(12,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(13,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(13,30): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(15,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(16,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(17,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(18,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(19,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(19,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(20,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(20,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(22,13): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(23,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(24,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(25,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(26,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(26,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(27,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(27,27): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(29,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(30,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(31,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(32,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(33,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(33,25): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(34,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts(34,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts (40 errors) ==== - class C { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class C2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class C3 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class C4 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class C5 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - class C6 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - interface I { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface I2 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface I3 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface I4 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface I5 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - interface I6 { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - function f() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f2() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f3() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f4() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f5() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function f6() { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - var e = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var e2 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var e3 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var e4 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var e5 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var e6 = () => { } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - var a: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a2: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a3: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a4: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a5: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - var a6: { (): void } - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterUsedAsConstraint.symbols b/tests/baselines/reference/typeParameterUsedAsConstraint.symbols new file mode 100644 index 00000000000..0b031742e75 --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsConstraint.symbols @@ -0,0 +1,211 @@ +=== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts === +class C { } +>C : Symbol(C, Decl(typeParameterUsedAsConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 0, 8)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 0, 10)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 0, 8)) + +class C2 { } +>C2 : Symbol(C2, Decl(typeParameterUsedAsConstraint.ts, 0, 27)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 1, 9)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 1, 21)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 1, 21)) + +class C3 { } +>C3 : Symbol(C3, Decl(typeParameterUsedAsConstraint.ts, 1, 28)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 2, 9)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 2, 24)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 2, 9)) + +class C4 { } +>C4 : Symbol(C4, Decl(typeParameterUsedAsConstraint.ts, 2, 41)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 3, 9)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 3, 21)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 3, 21)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +class C5 { } +>C5 : Symbol(C5, Decl(typeParameterUsedAsConstraint.ts, 3, 41)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 4, 9)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 4, 21)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 4, 21)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 4, 34)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 4, 34)) + +class C6 { } +>C6 : Symbol(C6, Decl(typeParameterUsedAsConstraint.ts, 4, 41)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 5, 9)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 5, 11)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 5, 9)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 5, 24)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 5, 11)) + +interface I { } +>I : Symbol(I, Decl(typeParameterUsedAsConstraint.ts, 5, 41)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 7, 12)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 7, 14)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 7, 12)) + +interface I2 { } +>I2 : Symbol(I2, Decl(typeParameterUsedAsConstraint.ts, 7, 31)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 8, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 8, 25)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 8, 25)) + +interface I3 { } +>I3 : Symbol(I3, Decl(typeParameterUsedAsConstraint.ts, 8, 32)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 9, 13)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 9, 28)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 9, 13)) + +interface I4 { } +>I4 : Symbol(I4, Decl(typeParameterUsedAsConstraint.ts, 9, 45)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 10, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 10, 25)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 10, 25)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +interface I5 { } +>I5 : Symbol(I5, Decl(typeParameterUsedAsConstraint.ts, 10, 45)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 11, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 11, 25)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 11, 25)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 11, 38)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 11, 38)) + +interface I6 { } +>I6 : Symbol(I6, Decl(typeParameterUsedAsConstraint.ts, 11, 45)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 12, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 12, 15)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 12, 13)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 12, 28)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 12, 15)) + +function f() { } +>f : Symbol(f, Decl(typeParameterUsedAsConstraint.ts, 12, 45)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 14, 11)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 14, 13)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 14, 11)) + +function f2() { } +>f2 : Symbol(f2, Decl(typeParameterUsedAsConstraint.ts, 14, 32)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 15, 12)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 15, 24)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 15, 24)) + +function f3() { } +>f3 : Symbol(f3, Decl(typeParameterUsedAsConstraint.ts, 15, 33)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 16, 12)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 16, 27)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 16, 12)) + +function f4() { } +>f4 : Symbol(f4, Decl(typeParameterUsedAsConstraint.ts, 16, 46)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 17, 12)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 17, 24)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 17, 24)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +function f5() { } +>f5 : Symbol(f5, Decl(typeParameterUsedAsConstraint.ts, 17, 46)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 18, 12)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 18, 24)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 18, 24)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 18, 37)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 18, 37)) + +function f6() { } +>f6 : Symbol(f6, Decl(typeParameterUsedAsConstraint.ts, 18, 46)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 19, 12)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 19, 14)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 19, 12)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 19, 27)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 19, 14)) + +var e = () => { } +>e : Symbol(e, Decl(typeParameterUsedAsConstraint.ts, 21, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 21, 9)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 21, 11)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 21, 9)) + +var e2 = () => { } +>e2 : Symbol(e2, Decl(typeParameterUsedAsConstraint.ts, 22, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 22, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 22, 22)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 22, 22)) + +var e3 = () => { } +>e3 : Symbol(e3, Decl(typeParameterUsedAsConstraint.ts, 23, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 23, 10)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 23, 25)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 23, 10)) + +var e4 = () => { } +>e4 : Symbol(e4, Decl(typeParameterUsedAsConstraint.ts, 24, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 24, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 24, 22)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 24, 22)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +var e5 = () => { } +>e5 : Symbol(e5, Decl(typeParameterUsedAsConstraint.ts, 25, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 25, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 25, 22)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 25, 22)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 25, 35)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 25, 35)) + +var e6 = () => { } +>e6 : Symbol(e6, Decl(typeParameterUsedAsConstraint.ts, 26, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 26, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 26, 12)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 26, 10)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 26, 25)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 26, 12)) + +var a: { (): void } +>a : Symbol(a, Decl(typeParameterUsedAsConstraint.ts, 28, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 28, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 28, 12)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 28, 10)) + +var a2: { (): void } +>a2 : Symbol(a2, Decl(typeParameterUsedAsConstraint.ts, 29, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 29, 11)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 29, 23)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 29, 23)) + +var a3: { (): void } +>a3 : Symbol(a3, Decl(typeParameterUsedAsConstraint.ts, 30, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 30, 11)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 30, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 30, 11)) + +var a4: { (): void } +>a4 : Symbol(a4, Decl(typeParameterUsedAsConstraint.ts, 31, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 31, 11)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 31, 23)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 31, 23)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) + +var a5: { (): void } +>a5 : Symbol(a5, Decl(typeParameterUsedAsConstraint.ts, 32, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 32, 11)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 32, 23)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 32, 23)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 32, 36)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 32, 36)) + +var a6: { (): void } +>a6 : Symbol(a6, Decl(typeParameterUsedAsConstraint.ts, 33, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 33, 11)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 33, 13)) +>T : Symbol(T, Decl(typeParameterUsedAsConstraint.ts, 33, 11)) +>V : Symbol(V, Decl(typeParameterUsedAsConstraint.ts, 33, 26)) +>U : Symbol(U, Decl(typeParameterUsedAsConstraint.ts, 33, 13)) + diff --git a/tests/baselines/reference/typeParameterUsedAsConstraint.types b/tests/baselines/reference/typeParameterUsedAsConstraint.types new file mode 100644 index 00000000000..347eeed9009 --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsConstraint.types @@ -0,0 +1,217 @@ +=== tests/cases/conformance/types/typeParameters/typeParameterLists/typeParameterUsedAsConstraint.ts === +class C { } +>C : C +>T : T +>U : U +>T : T + +class C2 { } +>C2 : C2 +>T : T +>U : U +>U : U + +class C3 { } +>C3 : C3 +>T : T +>Date : Date +>U : U +>T : T + +class C4 { } +>C4 : C4 +>T : T +>U : U +>U : U +>Date : Date + +class C5 { } +>C5 : C5 +>T : T +>U : U +>U : U +>V : V +>V : V + +class C6 { } +>C6 : C6 +>T : T +>U : U +>T : T +>V : V +>U : U + +interface I { } +>I : I +>T : T +>U : U +>T : T + +interface I2 { } +>I2 : I2 +>T : T +>U : U +>U : U + +interface I3 { } +>I3 : I3 +>T : T +>Date : Date +>U : U +>T : T + +interface I4 { } +>I4 : I4 +>T : T +>U : U +>U : U +>Date : Date + +interface I5 { } +>I5 : I5 +>T : T +>U : U +>U : U +>V : V +>V : V + +interface I6 { } +>I6 : I6 +>T : T +>U : U +>T : T +>V : V +>U : U + +function f() { } +>f : () => void +>T : T +>U : U +>T : T + +function f2() { } +>f2 : () => void +>T : T +>U : U +>U : U + +function f3() { } +>f3 : () => void +>T : T +>Date : Date +>U : U +>T : T + +function f4() { } +>f4 : () => void +>T : T +>U : U +>U : U +>Date : Date + +function f5() { } +>f5 : () => void +>T : T +>U : U +>U : U +>V : V +>V : V + +function f6() { } +>f6 : () => void +>T : T +>U : U +>T : T +>V : V +>U : U + +var e = () => { } +>e : () => void +>() => { } : () => void +>T : T +>U : U +>T : T + +var e2 = () => { } +>e2 : () => void +>() => { } : () => void +>T : T +>U : U +>U : U + +var e3 = () => { } +>e3 : () => void +>() => { } : () => void +>T : T +>Date : Date +>U : U +>T : T + +var e4 = () => { } +>e4 : () => void +>() => { } : () => void +>T : T +>U : U +>U : U +>Date : Date + +var e5 = () => { } +>e5 : () => void +>() => { } : () => void +>T : T +>U : U +>U : U +>V : V +>V : V + +var e6 = () => { } +>e6 : () => void +>() => { } : () => void +>T : T +>U : U +>T : T +>V : V +>U : U + +var a: { (): void } +>a : () => void +>T : T +>U : U +>T : T + +var a2: { (): void } +>a2 : () => void +>T : T +>U : U +>U : U + +var a3: { (): void } +>a3 : () => void +>T : T +>Date : Date +>U : U +>T : T + +var a4: { (): void } +>a4 : () => void +>T : T +>U : U +>U : U +>Date : Date + +var a5: { (): void } +>a5 : () => void +>T : T +>U : U +>U : U +>V : V +>V : V + +var a6: { (): void } +>a6 : () => void +>T : T +>U : U +>T : T +>V : V +>U : U + diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.errors.txt b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.errors.txt deleted file mode 100644 index 9860b9ac59f..00000000000 --- a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.errors.txt +++ /dev/null @@ -1,88 +0,0 @@ -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(3,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(4,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(5,12): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(8,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(9,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(10,12): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(13,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(14,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(15,12): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(18,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(19,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(20,12): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(23,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(24,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(25,12): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(28,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(29,5): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts(30,12): error TS2322: Type 'U' is not assignable to type 'T'. - - -==== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts (18 errors) ==== - // Type parameters are in scope in their own and other type parameter lists - - function foo(x: T, y: U): T { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - - function foo2(x: T, y: U): T { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - - var f = function (x: T, y: U): T { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - - var f2 = function (x: T, y: U): T { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - - var f3 = (x: T, y: U): T => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - - var f4 = (x: T, y: U): T => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.symbols b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.symbols new file mode 100644 index 00000000000..52ec3d2e29d --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.symbols @@ -0,0 +1,116 @@ +=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts === +// Type parameters are in scope in their own and other type parameter lists + +function foo(x: T, y: U): T { +>foo : Symbol(foo, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 15)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 13)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 29)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 13)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 34)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 15)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 13)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 29)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 34)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 2, 34)) +} + +function foo2(x: T, y: U): T { +>foo2 : Symbol(foo2, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 5, 1)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 14)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 26)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 30)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 35)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 14)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 26)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 30)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 35)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 7, 35)) +} + +var f = function (x: T, y: U): T { +>f : Symbol(f, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 18)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 20)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 18)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 34)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 18)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 39)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 20)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 18)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 34)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 39)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 12, 39)) +} + +var f2 = function (x: T, y: U): T { +>f2 : Symbol(f2, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 3)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 19)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 31)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 31)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 35)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 31)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 40)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 19)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 31)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 35)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 40)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 17, 40)) +} + +var f3 = (x: T, y: U): T => { +>f3 : Symbol(f3, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 12)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 10)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 10)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 31)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 12)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 10)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 31)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 22, 31)) +} + +var f4 = (x: T, y: U): T => { +>f4 : Symbol(f4, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 3)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 10)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 22)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 22)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 22)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 31)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 10)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 22)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 31)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint.ts, 27, 31)) +} diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.types b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.types new file mode 100644 index 00000000000..4b4a05c9e02 --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint.types @@ -0,0 +1,126 @@ +=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint.ts === +// Type parameters are in scope in their own and other type parameter lists + +function foo(x: T, y: U): T { +>foo : (x: T, y: U) => T +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} + +function foo2(x: T, y: U): T { +>foo2 : (x: T, y: U) => T +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} + +var f = function (x: T, y: U): T { +>f : (x: T, y: U) => T +>function (x: T, y: U): T { x = y; return y;} : (x: T, y: U) => T +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} + +var f2 = function (x: T, y: U): T { +>f2 : (x: T, y: U) => T +>function (x: T, y: U): T { x = y; return y;} : (x: T, y: U) => T +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} + +var f3 = (x: T, y: U): T => { +>f3 : (x: T, y: U) => T +>(x: T, y: U): T => { x = y; return y;} : (x: T, y: U) => T +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} + +var f4 = (x: T, y: U): T => { +>f4 : (x: T, y: U) => T +>(x: T, y: U): T => { x = y; return y;} : (x: T, y: U) => T +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U +} diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.errors.txt b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.errors.txt deleted file mode 100644 index 12b90ac8525..00000000000 --- a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.errors.txt +++ /dev/null @@ -1,113 +0,0 @@ -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(4,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(7,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(8,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(13,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(16,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(17,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(22,22): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(25,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(26,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(31,20): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(34,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(35,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(40,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(43,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(44,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(49,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(52,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts(53,20): error TS2322: Type 'U' is not assignable to type 'T'. - - -==== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts (18 errors) ==== - // Type parameters are in scope in their own and other type parameter lists - // Nested local functions - - function foo(x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - function baz(a: X, b: Y): T { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } - - function foo2(x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - function baz(a: X, b: Y): T { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } - - var f = function (x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - var g = function (a: X, b: Y): T { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } - - var f2 = function (x: T, y: U) { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - var g = function baz(a: X, b: Y): T { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } - - var f3 = (x: T, y: U) => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - var g = (a: X, b: Y): T => { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } - - var f4 = (x: T, y: U) => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - function bar() { - var g = (a: X, b: Y): T => { - x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. - } - } - } \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.symbols b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.symbols new file mode 100644 index 00000000000..3f19ef8c5f1 --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.symbols @@ -0,0 +1,238 @@ +=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts === +// Type parameters are in scope in their own and other type parameter lists +// Nested local functions + +function foo(x: T, y: U) { +>foo : Symbol(foo, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 0, 0)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 13)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 15)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 13)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 29)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 13)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 34)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 15)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 42)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 4, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 13)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 4, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 15)) + + function baz(a: X, b: Y): T { +>baz : Symbol(baz, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 4, 46)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 21)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 4, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 33)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 4, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 47)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 21)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 52)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 5, 33)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 13)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 29)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 34)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 3, 34)) + } + } +} + +function foo2(x: T, y: U) { +>foo2 : Symbol(foo2, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 10, 1)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 14)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 26)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 30)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 35)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 14)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 43)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 13, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 26)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 13, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 14)) + + function baz(a: X, b: Y): T { +>baz : Symbol(baz, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 13, 46)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 21)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 13, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 33)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 13, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 47)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 21)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 52)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 14, 33)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 26)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 30)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 35)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 12, 35)) + } + } +} + +var f = function (x: T, y: U) { +>f : Symbol(f, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 18)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 20)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 18)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 34)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 18)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 39)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 20)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 47)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 22, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 18)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 22, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 20)) + + var g = function (a: X, b: Y): T { +>g : Symbol(g, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 11)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 26)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 22, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 38)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 22, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 52)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 26)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 57)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 23, 38)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 18)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 34)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 39)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 21, 39)) + } + } +} + +var f2 = function (x: T, y: U) { +>f2 : Symbol(f2, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 3)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 19)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 31)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 31)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 35)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 31)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 40)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 19)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 48)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 31, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 31)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 31, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 19)) + + var g = function baz(a: X, b: Y): T { +>g : Symbol(g, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 11)) +>baz : Symbol(baz, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 15)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 29)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 31, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 41)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 31, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 55)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 29)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 60)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 32, 41)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 31)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 35)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 40)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 30, 40)) + } + } +} + +var f3 = (x: T, y: U) => { +>f3 : Symbol(f3, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 3)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 10)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 12)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 10)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 10)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 31)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 12)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 42)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 40, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 10)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 40, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 12)) + + var g = (a: X, b: Y): T => { +>g : Symbol(g, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 11)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 17)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 40, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 29)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 40, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 43)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 17)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 48)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 41, 29)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 10)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 31)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 39, 31)) + } + } +} + +var f4 = (x: T, y: U) => { +>f4 : Symbol(f4, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 3)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 10)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 22)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 22)) +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 26)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 22)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 31)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 10)) + + function bar() { +>bar : Symbol(bar, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 42)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 49, 17)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 22)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 49, 29)) +>U : Symbol(U, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 10)) + + var g = (a: X, b: Y): T => { +>g : Symbol(g, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 11)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 17)) +>W : Symbol(W, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 49, 29)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 29)) +>V : Symbol(V, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 49, 17)) +>a : Symbol(a, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 43)) +>X : Symbol(X, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 17)) +>b : Symbol(b, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 48)) +>Y : Symbol(Y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 50, 29)) +>T : Symbol(T, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 22)) + + x = y; +>x : Symbol(x, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 26)) +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 31)) + + return y; +>y : Symbol(y, Decl(typeParameterUsedAsTypeParameterConstraint2.ts, 48, 31)) + } + } +} diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.types b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.types new file mode 100644 index 00000000000..d1e3828a2e1 --- /dev/null +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint2.types @@ -0,0 +1,252 @@ +=== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint2.ts === +// Type parameters are in scope in their own and other type parameter lists +// Nested local functions + +function foo(x: T, y: U) { +>foo : (x: T, y: U) => void +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + function baz(a: X, b: Y): T { +>baz : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} + +function foo2(x: T, y: U) { +>foo2 : (x: T, y: U) => void +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + function baz(a: X, b: Y): T { +>baz : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} + +var f = function (x: T, y: U) { +>f : (x: T, y: U) => void +>function (x: T, y: U) { function bar() { var g = function (a: X, b: Y): T { x = y; return y; } }} : (x: T, y: U) => void +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + var g = function (a: X, b: Y): T { +>g : (a: X, b: Y) => T +>function (a: X, b: Y): T { x = y; return y; } : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} + +var f2 = function (x: T, y: U) { +>f2 : (x: T, y: U) => void +>function (x: T, y: U) { function bar() { var g = function baz(a: X, b: Y): T { x = y; return y; } }} : (x: T, y: U) => void +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + var g = function baz(a: X, b: Y): T { +>g : (a: X, b: Y) => T +>function baz(a: X, b: Y): T { x = y; return y; } : (a: X, b: Y) => T +>baz : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} + +var f3 = (x: T, y: U) => { +>f3 : (x: T, y: U) => void +>(x: T, y: U) => { function bar() { var g = (a: X, b: Y): T => { x = y; return y; } }} : (x: T, y: U) => void +>T : T +>U : U +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + var g = (a: X, b: Y): T => { +>g : (a: X, b: Y) => T +>(a: X, b: Y): T => { x = y; return y; } : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} + +var f4 = (x: T, y: U) => { +>f4 : (x: T, y: U) => void +>(x: T, y: U) => { function bar() { var g = (a: X, b: Y): T => { x = y; return y; } }} : (x: T, y: U) => void +>U : U +>T : T +>T : T +>x : T +>T : T +>y : U +>U : U + + function bar() { +>bar : () => void +>V : V +>T : T +>W : W +>U : U + + var g = (a: X, b: Y): T => { +>g : (a: X, b: Y) => T +>(a: X, b: Y): T => { x = y; return y; } : (a: X, b: Y) => T +>X : X +>W : W +>Y : Y +>V : V +>a : X +>X : X +>b : Y +>Y : Y +>T : T + + x = y; +>x = y : U +>x : T +>y : U + + return y; +>y : U + } + } +} diff --git a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint4.errors.txt b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint4.errors.txt index d78faf74fab..18983107757 100644 --- a/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint4.errors.txt +++ b/tests/baselines/reference/typeParameterUsedAsTypeParameterConstraint4.errors.txt @@ -1,57 +1,30 @@ -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(4,12): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(4,25): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(5,8): error TS2304: Cannot find name 'W'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(8,16): error TS2322: Type 'W' is not assignable to type 'T'. - Type 'V' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(12,16): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(12,29): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(15,8): error TS2304: Cannot find name 'W'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(19,17): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(19,43): error TS2304: Cannot find name 'V'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(20,47): error TS2304: Cannot find name 'X'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(22,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(23,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(28,15): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(28,44): error TS2304: Cannot find name 'W'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(29,47): error TS2304: Cannot find name 'Y'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(31,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(32,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(37,14): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(38,47): error TS2304: Cannot find name 'X'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(38,53): error TS2304: Cannot find name 'Y'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(40,13): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(41,20): error TS2322: Type 'U' is not assignable to type 'T'. -tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(46,11): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(46,30): error TS2304: Cannot find name 'V'. tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts(46,36): error TS2304: Cannot find name 'X'. -==== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts (25 errors) ==== +==== tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsedAsTypeParameterConstraint4.ts (10 errors) ==== // Type parameters are in scope in their own and other type parameter lists // Some negative cases class C { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. z: W; // error ~ !!! error TS2304: Cannot find name 'W'. foo(x: W): T { var r: T; return x; - ~ -!!! error TS2322: Type 'W' is not assignable to type 'T'. -!!! error TS2322: Type 'V' is not assignable to type 'T'. } } interface I { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. x: T; y: U; z: W; // error @@ -61,8 +34,6 @@ tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsed } function foo(x: T, y: U): V { // error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~ !!! error TS2304: Cannot find name 'V'. function bar(): X { // error @@ -70,18 +41,12 @@ tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsed !!! error TS2304: Cannot find name 'X'. function baz(a: X, b: Y): T { x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. } } } function foo2(x: T, y: U): W { // error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~ !!! error TS2304: Cannot find name 'W'. function bar(): Y { // error @@ -89,18 +54,12 @@ tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsed !!! error TS2304: Cannot find name 'Y'. function baz(a: X, b: Y): T { x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. } } } var f3 = (x: T, y: U) => { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. function bar(r: X, s: Y) { // error ~ !!! error TS2304: Cannot find name 'X'. @@ -108,18 +67,12 @@ tests/cases/conformance/types/objectTypeLiteral/callSignatures/typeParameterUsed !!! error TS2304: Cannot find name 'Y'. var g = (a: X, b: Y): T => { x = y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. return y; - ~ -!!! error TS2322: Type 'U' is not assignable to type 'T'. } } } var f4 = (x: V, y: X) => { // error - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. ~ !!! error TS2304: Cannot find name 'V'. ~ diff --git a/tests/baselines/reference/typeParameterWithInvalidConstraintType.errors.txt b/tests/baselines/reference/typeParameterWithInvalidConstraintType.errors.txt index 8201f752e51..79af423f917 100644 --- a/tests/baselines/reference/typeParameterWithInvalidConstraintType.errors.txt +++ b/tests/baselines/reference/typeParameterWithInvalidConstraintType.errors.txt @@ -1,10 +1,10 @@ -tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. +tests/cases/compiler/typeParameterWithInvalidConstraintType.ts(1,19): error TS2313: Type parameter 'T' has a circular constraint. ==== tests/cases/compiler/typeParameterWithInvalidConstraintType.ts (1 errors) ==== class A { - ~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. + ~ +!!! error TS2313: Type parameter 'T' has a circular constraint. foo() { var x: T; // no error expected below this line diff --git a/tests/baselines/reference/unspecializedConstraints.errors.txt b/tests/baselines/reference/unspecializedConstraints.errors.txt index fc840f328df..a049e508f80 100644 --- a/tests/baselines/reference/unspecializedConstraints.errors.txt +++ b/tests/baselines/reference/unspecializedConstraints.errors.txt @@ -1,10 +1,7 @@ tests/cases/compiler/unspecializedConstraints.ts(84,44): error TS2304: Cannot find name 'TypeParameter'. -tests/cases/compiler/unspecializedConstraints.ts(127,28): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/unspecializedConstraints.ts(135,26): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -tests/cases/compiler/unspecializedConstraints.ts(144,24): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. -==== tests/cases/compiler/unspecializedConstraints.ts (4 errors) ==== +==== tests/cases/compiler/unspecializedConstraints.ts (1 errors) ==== module ts { interface Map { [index: string]: T; @@ -134,8 +131,6 @@ tests/cases/compiler/unspecializedConstraints.ts(144,24): error TS2313: Constrai } function arrayContains>(a: T[], item: T): boolean { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var len = a.length; for (var i = 0; i < len; i++) { if (item.equals(a[i])) return true; @@ -144,8 +139,6 @@ tests/cases/compiler/unspecializedConstraints.ts(144,24): error TS2313: Constrai } function arrayEquals>(a: T[], b: T[]): boolean { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var len = a.length; if (b.length !== len) return false; for (var i = 0; i < len; i++) { @@ -155,8 +148,6 @@ tests/cases/compiler/unspecializedConstraints.ts(144,24): error TS2313: Constrai } function setEquals>(a: T[], b: T[]): boolean { - ~~~~~~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. var len = a.length; if (b.length !== len) return false; for (var i = 0; i < len; i++) { diff --git a/tests/baselines/reference/wrappedAndRecursiveConstraints2.errors.txt b/tests/baselines/reference/wrappedAndRecursiveConstraints2.errors.txt deleted file mode 100644 index 0a7bc52f9d2..00000000000 --- a/tests/baselines/reference/wrappedAndRecursiveConstraints2.errors.txt +++ /dev/null @@ -1,12 +0,0 @@ -tests/cases/conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints2.ts(1,9): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - - -==== tests/cases/conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints2.ts (1 errors) ==== - class C> { // error - ~~~~~~~~~~~~~~ -!!! error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. - constructor(x: T) { } - } - - var c = new C(1); - var c = new C(new C('')); // error \ No newline at end of file diff --git a/tests/baselines/reference/wrappedAndRecursiveConstraints2.symbols b/tests/baselines/reference/wrappedAndRecursiveConstraints2.symbols new file mode 100644 index 00000000000..c359e5b0c4a --- /dev/null +++ b/tests/baselines/reference/wrappedAndRecursiveConstraints2.symbols @@ -0,0 +1,21 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints2.ts === +class C> { // error +>C : Symbol(C, Decl(wrappedAndRecursiveConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(wrappedAndRecursiveConstraints2.ts, 0, 8)) +>C : Symbol(C, Decl(wrappedAndRecursiveConstraints2.ts, 0, 0)) +>T : Symbol(T, Decl(wrappedAndRecursiveConstraints2.ts, 0, 8)) + + constructor(x: T) { } +>x : Symbol(x, Decl(wrappedAndRecursiveConstraints2.ts, 1, 16)) +>T : Symbol(T, Decl(wrappedAndRecursiveConstraints2.ts, 0, 8)) +} + +var c = new C(1); +>c : Symbol(c, Decl(wrappedAndRecursiveConstraints2.ts, 4, 3), Decl(wrappedAndRecursiveConstraints2.ts, 5, 3)) +>C : Symbol(C, Decl(wrappedAndRecursiveConstraints2.ts, 0, 0)) + +var c = new C(new C('')); // error +>c : Symbol(c, Decl(wrappedAndRecursiveConstraints2.ts, 4, 3), Decl(wrappedAndRecursiveConstraints2.ts, 5, 3)) +>C : Symbol(C, Decl(wrappedAndRecursiveConstraints2.ts, 0, 0)) +>C : Symbol(C, Decl(wrappedAndRecursiveConstraints2.ts, 0, 0)) + diff --git a/tests/baselines/reference/wrappedAndRecursiveConstraints2.types b/tests/baselines/reference/wrappedAndRecursiveConstraints2.types new file mode 100644 index 00000000000..479cac1d184 --- /dev/null +++ b/tests/baselines/reference/wrappedAndRecursiveConstraints2.types @@ -0,0 +1,26 @@ +=== tests/cases/conformance/types/typeParameters/typeArgumentLists/wrappedAndRecursiveConstraints2.ts === +class C> { // error +>C : C +>T : T +>C : C +>T : T + + constructor(x: T) { } +>x : T +>T : T +} + +var c = new C(1); +>c : C +>new C(1) : C +>C : typeof C +>1 : number + +var c = new C(new C('')); // error +>c : C +>new C(new C('')) : C> +>C : typeof C +>new C('') : C +>C : typeof C +>'' : string + From 956a6b720abf65376e80de610f819ec06afcf260 Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Tue, 1 Dec 2015 16:18:06 -0800 Subject: [PATCH 057/265] Add support for Chakra Host in sys. --- src/compiler/sys.ts | 71 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 3a90ca42fa1..a05383f0b9a 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -47,6 +47,21 @@ namespace ts { constructor(o: any); } + declare var ChakraHost: { + args: string[]; + currentDirectory: string; + executingFile: string; + echo(s: string): void; + quit(exitCode?: number): void; + fileExists(path: string): boolean; + directoryExists(path: string): boolean; + createDirectory(path: string): void; + resolvePath(path: string): string; + readFile(path: string): string; + writeFile(path: string, contents: string): void; + readDirectory(path: string, extension?: string, exclude?: string[]): string[]; + } + export var sys: System = (function () { function getWScriptSystem(): System { @@ -281,7 +296,7 @@ namespace ts { // REVIEW: for now this implementation uses polling. // The advantage of polling is that it works reliably // on all os and with network mounted files. - // For 90 referenced files, the average time to detect + // For 90 referenced files, the average time to detect // changes is 2*msInterval (by default 5 seconds). // The overhead of this is .04 percent (1/2500) with // average pause of < 1 millisecond (and max @@ -406,7 +421,7 @@ namespace ts { }; }, watchDirectory: (path, callback, recursive) => { - // Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows + // Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows // (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643) return _fs.watch( path, @@ -454,6 +469,53 @@ namespace ts { } }; } + function getChakraSystem(): System { + + return { + newLine: '\r\n', + args: ChakraHost.args, + useCaseSensitiveFileNames: false, + write(message: string) { + ChakraHost.echo(message); + }, + readFile(path: string, encoding?: string) { + // encoding is automatically handled by the implementation in ChakraHost + return ChakraHost.readFile(path); + }, + writeFile(path: string, data: string, writeByteOrderMark?: boolean) { + // If a BOM is required, emit one + if (writeByteOrderMark) { + data = "\uFEFF" + data; + } + + ChakraHost.writeFile(path, data); + }, + resolvePath(path: string) { + return ChakraHost.resolvePath(path); + }, + fileExists(path: string) { + return ChakraHost.fileExists(path); + }, + directoryExists(path: string) { + return ChakraHost.directoryExists(path); + }, + createDirectory(path: string) { + ChakraHost.createDirectory(path); + }, + getExecutingFilePath() { + return ChakraHost.executingFile; + }, + getCurrentDirectory() { + return ChakraHost.currentDirectory; + }, + readDirectory(path: string, extension?: string, exclude?: string[]) { + return ChakraHost.readDirectory(path, extension, exclude); + }, + exit(exitCode?: number) { + ChakraHost.quit(exitCode); + } + }; + } if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } @@ -462,8 +524,13 @@ namespace ts { // process.browser check excludes webpack and browserify return getNodeSystem(); } + else if (typeof ChakraHost !== "undefined") { + return getChakraSystem(); + } else { return undefined; // Unsupported host } })(); } + + From 951a77f7bd447a322e6dd7f10e2b1fa41c3927f5 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 17:34:40 -0800 Subject: [PATCH 058/265] respect root dir/common src dir when generating module names --- src/compiler/utilities.ts | 6 ++- tests/baselines/reference/commonSourceDir5.js | 6 +-- tests/baselines/reference/commonSourceDir6.js | 6 +-- ...ilesEmittingIntoSameOutputWithOutOption.js | 2 +- .../getEmitOutputSingleFile2.baseline | 2 +- .../reference/outFilerootDirModuleNamesAmd.js | 25 +++++++++++ .../outFilerootDirModuleNamesAmd.symbols | 18 ++++++++ .../outFilerootDirModuleNamesAmd.types | 20 +++++++++ .../outFilerootDirModuleNamesSystem.js | 44 +++++++++++++++++++ .../outFilerootDirModuleNamesSystem.symbols | 18 ++++++++ .../outFilerootDirModuleNamesSystem.types | 20 +++++++++ .../baselines/reference/outModuleConcatAmd.js | 10 ++--- .../outModuleConcatAmd.sourcemap.txt | 4 +- .../reference/outModuleConcatCommonjs.js | 6 +-- .../baselines/reference/outModuleConcatES6.js | 6 +-- .../reference/outModuleConcatSystem.js | 10 ++--- .../outModuleConcatSystem.sourcemap.txt | 4 +- .../baselines/reference/outModuleConcatUmd.js | 6 +-- .../reference/outModuleTripleSlashRefs.js | 10 ++--- .../outModuleTripleSlashRefs.sourcemap.txt | 6 +-- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../amd/bin/test.d.ts | 2 +- .../amd/bin/test.js | 2 +- ...MultifolderSpecifyOutputFile.sourcemap.txt | 2 +- .../node/bin/test.d.ts | 2 +- .../outFilerootDirModuleNamesAmd.ts | 12 +++++ .../outFilerootDirModuleNamesSystem.ts | 12 +++++ 57 files changed, 247 insertions(+), 76 deletions(-) create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesAmd.js create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesAmd.symbols create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesAmd.types create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesSystem.js create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesSystem.symbols create mode 100644 tests/baselines/reference/outFilerootDirModuleNamesSystem.types create mode 100644 tests/cases/conformance/es6/moduleExportsAmd/outFilerootDirModuleNamesAmd.ts create mode 100644 tests/cases/conformance/es6/moduleExportsSystem/outFilerootDirModuleNamesSystem.ts diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 60118604c50..8c4b1312cdb 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1889,8 +1889,10 @@ namespace ts { * Resolves a local path to a path which is absolute to the base of the emit */ export function getExternalModuleNameFromPath(host: EmitHost, fileName: string): string { - const dir = toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), f => host.getCanonicalFileName(f)); - const relativePath = getRelativePathToDirectoryOrUrl(dir, fileName, dir, f => host.getCanonicalFileName(f), /*isAbsolutePathAnUrl*/ false); + const getCanonicalFileName = (f: string) => host.getCanonicalFileName(f); + const dir = toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); + const filePath = toPath(fileName, host.getCurrentDirectory(), getCanonicalFileName); + const relativePath = getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); return removeFileExtension(relativePath); } diff --git a/tests/baselines/reference/commonSourceDir5.js b/tests/baselines/reference/commonSourceDir5.js index 7a43aba254e..8bb11fec583 100644 --- a/tests/baselines/reference/commonSourceDir5.js +++ b/tests/baselines/reference/commonSourceDir5.js @@ -16,17 +16,17 @@ export var pi = Math.PI; export var y = x * i; //// [concat.js] -define("B:/baz", ["require", "exports", "A:/bar", "A:/foo"], function (require, exports, bar_1, foo_1) { +define("b:/baz", ["require", "exports", "a:/bar", "a:/foo"], function (require, exports, bar_1, foo_1) { "use strict"; exports.pi = Math.PI; exports.y = bar_1.x * foo_1.i; }); -define("A:/foo", ["require", "exports", "B:/baz"], function (require, exports, baz_1) { +define("a:/foo", ["require", "exports", "b:/baz"], function (require, exports, baz_1) { "use strict"; exports.i = Math.sqrt(-1); exports.z = baz_1.pi * baz_1.pi; }); -define("A:/bar", ["require", "exports", "A:/foo"], function (require, exports, foo_2) { +define("a:/bar", ["require", "exports", "a:/foo"], function (require, exports, foo_2) { "use strict"; exports.x = foo_2.z + foo_2.z; }); diff --git a/tests/baselines/reference/commonSourceDir6.js b/tests/baselines/reference/commonSourceDir6.js index 6fe0b4a1b8f..88f5828a500 100644 --- a/tests/baselines/reference/commonSourceDir6.js +++ b/tests/baselines/reference/commonSourceDir6.js @@ -16,17 +16,17 @@ export var pi = Math.PI; export var y = x * i; //// [concat.js] -define("tests/cases/compiler/baz", ["require", "exports", "tests/cases/compiler/a/bar", "tests/cases/compiler/a/foo"], function (require, exports, bar_1, foo_1) { +define("baz", ["require", "exports", "a/bar", "a/foo"], function (require, exports, bar_1, foo_1) { "use strict"; exports.pi = Math.PI; exports.y = bar_1.x * foo_1.i; }); -define("tests/cases/compiler/a/foo", ["require", "exports", "tests/cases/compiler/baz"], function (require, exports, baz_1) { +define("a/foo", ["require", "exports", "baz"], function (require, exports, baz_1) { "use strict"; exports.i = Math.sqrt(-1); exports.z = baz_1.pi * baz_1.pi; }); -define("tests/cases/compiler/a/bar", ["require", "exports", "tests/cases/compiler/a/foo"], function (require, exports, foo_2) { +define("a/bar", ["require", "exports", "a/foo"], function (require, exports, foo_2) { "use strict"; exports.x = foo_2.z + foo_2.z; }); diff --git a/tests/baselines/reference/filesEmittingIntoSameOutputWithOutOption.js b/tests/baselines/reference/filesEmittingIntoSameOutputWithOutOption.js index 164fd091c16..d8513e6731c 100644 --- a/tests/baselines/reference/filesEmittingIntoSameOutputWithOutOption.js +++ b/tests/baselines/reference/filesEmittingIntoSameOutputWithOutOption.js @@ -10,7 +10,7 @@ function foo() { //// [a.js] -define("tests/cases/compiler/a", ["require", "exports"], function (require, exports) { +define("a", ["require", "exports"], function (require, exports) { "use strict"; var c = (function () { function c() { diff --git a/tests/baselines/reference/getEmitOutputSingleFile2.baseline b/tests/baselines/reference/getEmitOutputSingleFile2.baseline index 21e28eb7feb..8d7b4662187 100644 --- a/tests/baselines/reference/getEmitOutputSingleFile2.baseline +++ b/tests/baselines/reference/getEmitOutputSingleFile2.baseline @@ -23,7 +23,7 @@ declare class Foo { x: string; y: number; } -declare module "inputFile3" { +declare module "inputfile3" { export var foo: number; export var bar: string; } diff --git a/tests/baselines/reference/outFilerootDirModuleNamesAmd.js b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js new file mode 100644 index 00000000000..66d280839d4 --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js @@ -0,0 +1,25 @@ +//// [tests/cases/conformance/es6/moduleExportsAmd/outFilerootDirModuleNamesAmd.ts] //// + +//// [a.ts] +import foo from "./b"; +export default class Foo {} +foo(); + +//// [b.ts] +import Foo from "./a"; +export default function foo() { new Foo(); } + + +//// [output.js] +define("b", ["require", "exports", "a"], function (require, exports, a_1) { + "use strict"; + function foo() { new a_1.default(); } + exports.default = foo; +}); +define("a", ["require", "exports", "b"], function (require, exports, b_1) { + "use strict"; + class Foo { + } + exports.default = Foo; + b_1.default(); +}); diff --git a/tests/baselines/reference/outFilerootDirModuleNamesAmd.symbols b/tests/baselines/reference/outFilerootDirModuleNamesAmd.symbols new file mode 100644 index 00000000000..fea742c20ca --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesAmd.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/es6/moduleExportsAmd/src/a.ts === +import foo from "./b"; +>foo : Symbol(foo, Decl(a.ts, 0, 6)) + +export default class Foo {} +>Foo : Symbol(Foo, Decl(a.ts, 0, 22)) + +foo(); +>foo : Symbol(foo, Decl(a.ts, 0, 6)) + +=== tests/cases/conformance/es6/moduleExportsAmd/src/b.ts === +import Foo from "./a"; +>Foo : Symbol(Foo, Decl(b.ts, 0, 6)) + +export default function foo() { new Foo(); } +>foo : Symbol(foo, Decl(b.ts, 0, 22)) +>Foo : Symbol(Foo, Decl(b.ts, 0, 6)) + diff --git a/tests/baselines/reference/outFilerootDirModuleNamesAmd.types b/tests/baselines/reference/outFilerootDirModuleNamesAmd.types new file mode 100644 index 00000000000..617096fd0dd --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesAmd.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/es6/moduleExportsAmd/src/a.ts === +import foo from "./b"; +>foo : () => void + +export default class Foo {} +>Foo : Foo + +foo(); +>foo() : void +>foo : () => void + +=== tests/cases/conformance/es6/moduleExportsAmd/src/b.ts === +import Foo from "./a"; +>Foo : typeof Foo + +export default function foo() { new Foo(); } +>foo : () => void +>new Foo() : Foo +>Foo : typeof Foo + diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.js b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js new file mode 100644 index 00000000000..298ad52689f --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.js @@ -0,0 +1,44 @@ +//// [tests/cases/conformance/es6/moduleExportsSystem/outFilerootDirModuleNamesSystem.ts] //// + +//// [a.ts] +import foo from "./b"; +export default class Foo {} +foo(); + +//// [b.ts] +import Foo from "./a"; +export default function foo() { new Foo(); } + + +//// [output.js] +System.register("b", ["a"], function(exports_1) { + "use strict"; + var a_1; + function foo() { new a_1.default(); } + exports_1("default", foo); + return { + setters:[ + function (a_1_1) { + a_1 = a_1_1; + }], + execute: function() { + } + } +}); +System.register("a", ["b"], function(exports_2) { + "use strict"; + var b_1; + var Foo; + return { + setters:[ + function (b_1_1) { + b_1 = b_1_1; + }], + execute: function() { + class Foo { + } + exports_2("default", Foo); + b_1.default(); + } + } +}); diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.symbols b/tests/baselines/reference/outFilerootDirModuleNamesSystem.symbols new file mode 100644 index 00000000000..535c037f5af --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.symbols @@ -0,0 +1,18 @@ +=== tests/cases/conformance/es6/moduleExportsSystem/src/a.ts === +import foo from "./b"; +>foo : Symbol(foo, Decl(a.ts, 0, 6)) + +export default class Foo {} +>Foo : Symbol(Foo, Decl(a.ts, 0, 22)) + +foo(); +>foo : Symbol(foo, Decl(a.ts, 0, 6)) + +=== tests/cases/conformance/es6/moduleExportsSystem/src/b.ts === +import Foo from "./a"; +>Foo : Symbol(Foo, Decl(b.ts, 0, 6)) + +export default function foo() { new Foo(); } +>foo : Symbol(foo, Decl(b.ts, 0, 22)) +>Foo : Symbol(Foo, Decl(b.ts, 0, 6)) + diff --git a/tests/baselines/reference/outFilerootDirModuleNamesSystem.types b/tests/baselines/reference/outFilerootDirModuleNamesSystem.types new file mode 100644 index 00000000000..2f0e23c2e81 --- /dev/null +++ b/tests/baselines/reference/outFilerootDirModuleNamesSystem.types @@ -0,0 +1,20 @@ +=== tests/cases/conformance/es6/moduleExportsSystem/src/a.ts === +import foo from "./b"; +>foo : () => void + +export default class Foo {} +>Foo : Foo + +foo(); +>foo() : void +>foo : () => void + +=== tests/cases/conformance/es6/moduleExportsSystem/src/b.ts === +import Foo from "./a"; +>Foo : typeof Foo + +export default function foo() { new Foo(); } +>foo : () => void +>new Foo() : Foo +>Foo : typeof Foo + diff --git a/tests/baselines/reference/outModuleConcatAmd.js b/tests/baselines/reference/outModuleConcatAmd.js index cfcd1bad9b8..6408511f2ec 100644 --- a/tests/baselines/reference/outModuleConcatAmd.js +++ b/tests/baselines/reference/outModuleConcatAmd.js @@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) { +define("ref/a", ["require", "exports"], function (require, exports) { "use strict"; var A = (function () { function A() { @@ -23,7 +23,7 @@ define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, })(); exports.A = A; }); -define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) { +define("b", ["require", "exports", "ref/a"], function (require, exports, a_1) { "use strict"; var B = (function (_super) { __extends(B, _super); @@ -37,12 +37,12 @@ define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/re //# sourceMappingURL=all.js.map //// [all.d.ts] -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleConcatAmd.sourcemap.txt b/tests/baselines/reference/outModuleConcatAmd.sourcemap.txt index 0b5988e4d3a..b8fe92f082c 100644 --- a/tests/baselines/reference/outModuleConcatAmd.sourcemap.txt +++ b/tests/baselines/reference/outModuleConcatAmd.sourcemap.txt @@ -13,7 +13,7 @@ sourceFile:tests/cases/compiler/ref/a.ts >>> function __() { this.constructor = d; } >>> d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); >>>}; ->>>define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) { +>>>define("ref/a", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> var A = (function () { 1 >^^^^ @@ -79,7 +79,7 @@ emittedFile:all.js sourceFile:tests/cases/compiler/b.ts ------------------------------------------------------------------- >>>}); ->>>define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) { +>>>define("b", ["require", "exports", "ref/a"], function (require, exports, a_1) { >>> "use strict"; >>> var B = (function (_super) { 1 >^^^^ diff --git a/tests/baselines/reference/outModuleConcatCommonjs.js b/tests/baselines/reference/outModuleConcatCommonjs.js index c859d6c63ef..0dbaee88004 100644 --- a/tests/baselines/reference/outModuleConcatCommonjs.js +++ b/tests/baselines/reference/outModuleConcatCommonjs.js @@ -20,12 +20,12 @@ var __extends = (this && this.__extends) || function (d, b) { //# sourceMappingURL=all.js.map //// [all.d.ts] -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleConcatES6.js b/tests/baselines/reference/outModuleConcatES6.js index 037d52eb410..45e58d2d773 100644 --- a/tests/baselines/reference/outModuleConcatES6.js +++ b/tests/baselines/reference/outModuleConcatES6.js @@ -15,12 +15,12 @@ export class B extends A { } //# sourceMappingURL=all.js.map //// [all.d.ts] -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleConcatSystem.js b/tests/baselines/reference/outModuleConcatSystem.js index 688221ca5b2..5ac811ea9a0 100644 --- a/tests/baselines/reference/outModuleConcatSystem.js +++ b/tests/baselines/reference/outModuleConcatSystem.js @@ -14,7 +14,7 @@ var __extends = (this && this.__extends) || function (d, b) { function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; -System.register("tests/cases/compiler/ref/a", [], function(exports_1) { +System.register("ref/a", [], function(exports_1) { "use strict"; var A; return { @@ -29,7 +29,7 @@ System.register("tests/cases/compiler/ref/a", [], function(exports_1) { } } }); -System.register("tests/cases/compiler/b", ["tests/cases/compiler/ref/a"], function(exports_2) { +System.register("b", ["ref/a"], function(exports_2) { "use strict"; var a_1; var B; @@ -53,12 +53,12 @@ System.register("tests/cases/compiler/b", ["tests/cases/compiler/ref/a"], functi //# sourceMappingURL=all.js.map //// [all.d.ts] -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt b/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt index 639fe3dcc89..88ff65a88a3 100644 --- a/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt +++ b/tests/baselines/reference/outModuleConcatSystem.sourcemap.txt @@ -13,7 +13,7 @@ sourceFile:tests/cases/compiler/ref/a.ts >>> function __() { this.constructor = d; } >>> d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); >>>}; ->>>System.register("tests/cases/compiler/ref/a", [], function(exports_1) { +>>>System.register("ref/a", [], function(exports_1) { >>> "use strict"; >>> var A; >>> return { @@ -82,7 +82,7 @@ sourceFile:tests/cases/compiler/b.ts >>> } >>> } >>>}); ->>>System.register("tests/cases/compiler/b", ["tests/cases/compiler/ref/a"], function(exports_2) { +>>>System.register("b", ["ref/a"], function(exports_2) { >>> "use strict"; >>> var a_1; >>> var B; diff --git a/tests/baselines/reference/outModuleConcatUmd.js b/tests/baselines/reference/outModuleConcatUmd.js index c4aad41c6ed..6c60a13c892 100644 --- a/tests/baselines/reference/outModuleConcatUmd.js +++ b/tests/baselines/reference/outModuleConcatUmd.js @@ -20,12 +20,12 @@ var __extends = (this && this.__extends) || function (d, b) { //# sourceMappingURL=all.js.map //// [all.d.ts] -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.js b/tests/baselines/reference/outModuleTripleSlashRefs.js index 88cb9c9ed38..0aabf2b4835 100644 --- a/tests/baselines/reference/outModuleTripleSlashRefs.js +++ b/tests/baselines/reference/outModuleTripleSlashRefs.js @@ -42,7 +42,7 @@ var Foo = (function () { } return Foo; })(); -define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) { +define("ref/a", ["require", "exports"], function (require, exports) { "use strict"; /// var A = (function () { @@ -52,7 +52,7 @@ define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, })(); exports.A = A; }); -define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) { +define("b", ["require", "exports", "ref/a"], function (require, exports, a_1) { "use strict"; var B = (function (_super) { __extends(B, _super); @@ -71,13 +71,13 @@ declare class Foo { member: Bar; } declare var GlobalFoo: Foo; -declare module "tests/cases/compiler/ref/a" { +declare module "ref/a" { export class A { member: typeof GlobalFoo; } } -declare module "tests/cases/compiler/b" { - import { A } from "tests/cases/compiler/ref/a"; +declare module "b" { + import { A } from "ref/a"; export class B extends A { } } diff --git a/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt b/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt index 1d0724543ca..b80246ed9f7 100644 --- a/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt +++ b/tests/baselines/reference/outModuleTripleSlashRefs.sourcemap.txt @@ -58,7 +58,7 @@ sourceFile:tests/cases/compiler/ref/b.ts 2 >^ 3 > 4 > ^^^^ -5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> +5 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-> 1 > 2 >} 3 > @@ -74,7 +74,7 @@ sourceFile:tests/cases/compiler/ref/b.ts emittedFile:all.js sourceFile:tests/cases/compiler/ref/a.ts ------------------------------------------------------------------- ->>>define("tests/cases/compiler/ref/a", ["require", "exports"], function (require, exports) { +>>>define("ref/a", ["require", "exports"], function (require, exports) { >>> "use strict"; >>> /// 1->^^^^ @@ -155,7 +155,7 @@ emittedFile:all.js sourceFile:tests/cases/compiler/b.ts ------------------------------------------------------------------- >>>}); ->>>define("tests/cases/compiler/b", ["require", "exports", "tests/cases/compiler/ref/a"], function (require, exports, a_1) { +>>>define("b", ["require", "exports", "ref/a"], function (require, exports, a_1) { >>> "use strict"; >>> var B = (function (_super) { 1 >^^^^ diff --git a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js index 6c9bb7e5029..a5ff923efe0 100644 --- a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt index 00c1d36ee61..d495eb07607 100644 --- a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:../test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/mapRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js index e39147c6ae1..9f8555682d6 100644 --- a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/mapRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/mapRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt index 064a3ae0604..ee3b40dc285 100644 --- a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/mapRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/amd/mapRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:../projects/outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/mapRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js index 621d7634ee1..a31b4d772ec 100644 --- a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt index 568d06c38d1..829640b7bb1 100644 --- a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:file:///tests/cases/projects/outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/maprootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js index 621d7634ee1..a31b4d772ec 100644 --- a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt index ea4aeaeecd9..c3f681d3691 100644 --- a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/amd/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/maprootUrlsourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.js index 132e408c648..f4180b78739 100644 --- a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/outModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js index aa75fa33169..5db4d6336f1 100644 --- a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt index b4b30c5d8c2..116d03e99d1 100644 --- a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/amd/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/sourceRootAbsolutePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js index aa75fa33169..5db4d6336f1 100644 --- a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/sourceRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/sourceRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt index ef5fa1f7b5a..14557880a96 100644 --- a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/sourceRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/amd/sourceRootRelativePathModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/sourceRootRelativePathModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.js index aa75fa33169..5db4d6336f1 100644 --- a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/sourcemapModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/sourcemapModuleMultifolderSpecifyOutputFile.sourcemap.txt index 797b9c0bf3c..6a48a2b7d8d 100644 --- a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/sourcemapModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/amd/sourcemapModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:../test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/sourcemapModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts +++ b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js index aa75fa33169..5db4d6336f1 100644 --- a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js +++ b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/bin/test.js @@ -28,7 +28,7 @@ define("outputdir_module_multifolder_ref/m2", ["require", "exports"], function ( } exports.m2_f1 = m2_f1; }); -define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { "use strict"; exports.a1 = 10; var c1 = (function () { diff --git a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/sourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/sourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt index a2d611841c4..e4b0a3e7496 100644 --- a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/sourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt +++ b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/amd/sourcerootUrlModuleMultifolderSpecifyOutputFile.sourcemap.txt @@ -342,7 +342,7 @@ emittedFile:bin/test.js sourceFile:outputdir_module_multifolder/test.ts ------------------------------------------------------------------- >>>}); ->>>define("test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { +>>>define("outputdir_module_multifolder/test", ["require", "exports", "outputdir_module_multifolder/ref/m1", "outputdir_module_multifolder_ref/m2"], function (require, exports, m1, m2) { >>> "use strict"; >>> exports.a1 = 10; 1 >^^^^ diff --git a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts index d42fc1cd136..b66a73a7c90 100644 --- a/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts +++ b/tests/baselines/reference/project/sourcerootUrlModuleMultifolderSpecifyOutputFile/node/bin/test.d.ts @@ -14,7 +14,7 @@ declare module "outputdir_module_multifolder_ref/m2" { export var m2_instance1: m2_c1; export function m2_f1(): m2_c1; } -declare module "test" { +declare module "outputdir_module_multifolder/test" { import m1 = require("outputdir_module_multifolder/ref/m1"); import m2 = require("outputdir_module_multifolder_ref/m2"); export var a1: number; diff --git a/tests/cases/conformance/es6/moduleExportsAmd/outFilerootDirModuleNamesAmd.ts b/tests/cases/conformance/es6/moduleExportsAmd/outFilerootDirModuleNamesAmd.ts new file mode 100644 index 00000000000..7f6fad73490 --- /dev/null +++ b/tests/cases/conformance/es6/moduleExportsAmd/outFilerootDirModuleNamesAmd.ts @@ -0,0 +1,12 @@ +// @target: ES6 +// @module: amd +// @rootDir: tests/cases/conformance/es6/moduleExportsAmd/src +// @outFile: output.js +// @filename: src/a.ts +import foo from "./b"; +export default class Foo {} +foo(); + +// @filename: src/b.ts +import Foo from "./a"; +export default function foo() { new Foo(); } diff --git a/tests/cases/conformance/es6/moduleExportsSystem/outFilerootDirModuleNamesSystem.ts b/tests/cases/conformance/es6/moduleExportsSystem/outFilerootDirModuleNamesSystem.ts new file mode 100644 index 00000000000..5708c84c4bd --- /dev/null +++ b/tests/cases/conformance/es6/moduleExportsSystem/outFilerootDirModuleNamesSystem.ts @@ -0,0 +1,12 @@ +// @target: ES6 +// @module: system +// @rootDir: tests/cases/conformance/es6/moduleExportsSystem/src +// @outFile: output.js +// @filename: src/a.ts +import foo from "./b"; +export default class Foo {} +foo(); + +// @filename: src/b.ts +import Foo from "./a"; +export default function foo() { new Foo(); } From 8d3e4f34756839b483ee3a7219c264c3e2b75366 Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Tue, 1 Dec 2015 17:44:43 -0800 Subject: [PATCH 059/265] cr feedback --- src/compiler/sys.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index a05383f0b9a..3b75a26a9a0 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -60,7 +60,7 @@ namespace ts { readFile(path: string): string; writeFile(path: string, contents: string): void; readDirectory(path: string, extension?: string, exclude?: string[]): string[]; - } + }; export var sys: System = (function () { @@ -209,6 +209,7 @@ namespace ts { } }; } + function getNodeSystem(): System { const _fs = require("fs"); const _path = require("path"); @@ -469,10 +470,11 @@ namespace ts { } }; } + function getChakraSystem(): System { return { - newLine: '\r\n', + newLine: "\r\n", args: ChakraHost.args, useCaseSensitiveFileNames: false, write(message: string) { @@ -516,6 +518,7 @@ namespace ts { } }; } + if (typeof WScript !== "undefined" && typeof ActiveXObject === "function") { return getWScriptSystem(); } From ace383d342e76866b653c5169d0ace81b3069dff Mon Sep 17 00:00:00 2001 From: Yui T Date: Tue, 1 Dec 2015 18:39:02 -0800 Subject: [PATCH 060/265] add tests --- .../quickInfoForTypeParameterInTypeAlias.ts | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts diff --git a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts new file mode 100644 index 00000000000..7259a299a7b --- /dev/null +++ b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts @@ -0,0 +1,29 @@ +/// + +//// type Ctor = new () => A/*1*/A; +//// type MixinCtor = new () => AA & { constructor: MixinCtor }; +//// type NestedCtor = new() => AA & (new () => AA & { constructor: NestedCtor }); +//// type Method = { method(): A/*4*/A }; +//// type Construct = { new(): A/*5*/A }; +//// type Call = { (): A/*6*/A }; +//// type Index = {[foo: string]: A/*7*/A}; +//// type GenericMethod = { method(): A/*8*/A & B/*9*/B } + +goTo.marker('1'); +verify.quickInfoIs('(type parameter) AA in type Ctor'); +goTo.marker('2'); +verify.quickInfoIs('(type parameter) AA in type MixinCtor'); +goTo.marker('3'); +verify.quickInfoIs('(type parameter) AA in type NestedCtor'); +goTo.marker('4'); +verify.quickInfoIs('(type parameter) AA in type Method'); +goTo.marker('5'); +verify.quickInfoIs('(type parameter) AA in type Construct'); +goTo.marker('6'); +verify.quickInfoIs('(type parameter) AA in type Call'); +goTo.marker('7'); +verify.quickInfoIs('(type parameter) AA in type Index'); +goTo.marker('8'); +verify.quickInfoIs('(type parameter) AA in type GenericMethod'); +goTo.marker('9'); +verify.quickInfoIs('(type parameter) BB in method(): AA & BB'); \ No newline at end of file From 81e012f90fe4837b4b5ee9d4d61e929578683fe9 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Tue, 1 Dec 2015 18:53:54 -0800 Subject: [PATCH 061/265] dont canonicalize the filename when generating names, just use the absolute path --- src/compiler/utilities.ts | 2 +- tests/baselines/reference/commonSourceDir5.js | 6 +++--- tests/baselines/reference/getEmitOutputSingleFile2.baseline | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8c4b1312cdb..280b8203ff4 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1891,7 +1891,7 @@ namespace ts { export function getExternalModuleNameFromPath(host: EmitHost, fileName: string): string { const getCanonicalFileName = (f: string) => host.getCanonicalFileName(f); const dir = toPath(host.getCommonSourceDirectory(), host.getCurrentDirectory(), getCanonicalFileName); - const filePath = toPath(fileName, host.getCurrentDirectory(), getCanonicalFileName); + const filePath = getNormalizedAbsolutePath(fileName, host.getCurrentDirectory()); const relativePath = getRelativePathToDirectoryOrUrl(dir, filePath, dir, getCanonicalFileName, /*isAbsolutePathAnUrl*/ false); return removeFileExtension(relativePath); } diff --git a/tests/baselines/reference/commonSourceDir5.js b/tests/baselines/reference/commonSourceDir5.js index 8bb11fec583..7a43aba254e 100644 --- a/tests/baselines/reference/commonSourceDir5.js +++ b/tests/baselines/reference/commonSourceDir5.js @@ -16,17 +16,17 @@ export var pi = Math.PI; export var y = x * i; //// [concat.js] -define("b:/baz", ["require", "exports", "a:/bar", "a:/foo"], function (require, exports, bar_1, foo_1) { +define("B:/baz", ["require", "exports", "A:/bar", "A:/foo"], function (require, exports, bar_1, foo_1) { "use strict"; exports.pi = Math.PI; exports.y = bar_1.x * foo_1.i; }); -define("a:/foo", ["require", "exports", "b:/baz"], function (require, exports, baz_1) { +define("A:/foo", ["require", "exports", "B:/baz"], function (require, exports, baz_1) { "use strict"; exports.i = Math.sqrt(-1); exports.z = baz_1.pi * baz_1.pi; }); -define("a:/bar", ["require", "exports", "a:/foo"], function (require, exports, foo_2) { +define("A:/bar", ["require", "exports", "A:/foo"], function (require, exports, foo_2) { "use strict"; exports.x = foo_2.z + foo_2.z; }); diff --git a/tests/baselines/reference/getEmitOutputSingleFile2.baseline b/tests/baselines/reference/getEmitOutputSingleFile2.baseline index 8d7b4662187..21e28eb7feb 100644 --- a/tests/baselines/reference/getEmitOutputSingleFile2.baseline +++ b/tests/baselines/reference/getEmitOutputSingleFile2.baseline @@ -23,7 +23,7 @@ declare class Foo { x: string; y: number; } -declare module "inputfile3" { +declare module "inputFile3" { export var foo: number; export var bar: string; } From 94129a50470dac34324f1acb926ab0bf0a16cd16 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 2 Dec 2015 09:45:34 -0800 Subject: [PATCH 062/265] Propagate 'this' type in constraint checking --- src/compiler/checker.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index dfd108cf713..5d94a51098e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6270,9 +6270,8 @@ namespace ts { const constraint = getConstraintOfTypeParameter(context.typeParameters[index]); if (constraint) { const instantiatedConstraint = instantiateType(constraint, getInferenceMapper(context)); - if (!isTypeAssignableTo(inferredType, instantiatedConstraint)) { - inferredType = instantiateType(constraint, createTypeEraser(context.typeParameters)); - context.inferredTypes[index] = inferredType; + if (!isTypeAssignableTo(inferredType, getTypeWithThisArgument(instantiatedConstraint, inferredType))) { + context.inferredTypes[index] = inferredType = instantiatedConstraint; } } } @@ -8716,9 +8715,13 @@ namespace ts { errorInfo = chainDiagnosticMessages(errorInfo, typeArgumentHeadMessage); typeArgumentHeadMessage = headMessage; } + if (!mapper) { + mapper = createTypeMapper(typeParameters, typeArgumentTypes); + } + const typeArgument = typeArgumentTypes[i]; typeArgumentsAreAssignable = checkTypeAssignableTo( - typeArgumentTypes[i], - instantiateType(constraint, mapper || (mapper = createTypeMapper(typeParameters, typeArgumentTypes))), + typeArgument, + getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), reportErrors ? typeArgumentNodes[i] : undefined, typeArgumentHeadMessage, errorInfo); @@ -11197,8 +11200,12 @@ namespace ts { typeArguments = map(typeArgumentNodes, getTypeFromTypeNode); mapper = createTypeMapper(typeParameters, typeArguments); } - result = result && checkTypeAssignableTo(typeArguments[i], instantiateType(constraint, mapper), - typeArgumentNodes[i], Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + const typeArgument = typeArguments[i]; + result = result && checkTypeAssignableTo( + typeArgument, + getTypeWithThisArgument(instantiateType(constraint, mapper), typeArgument), + typeArgumentNodes[i], + Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } return result; From 181c10a78fa116e791602215b51dd527cb425ffb Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 2 Dec 2015 10:23:28 -0800 Subject: [PATCH 063/265] Ensure that different type parameters are never considered identical --- src/compiler/checker.ts | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e737cd58bd5..523af078c01 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5073,9 +5073,6 @@ namespace ts { } return objectTypeRelatedTo(source, source, target, /*reportErrors*/ false); } - if (source.flags & TypeFlags.TypeParameter && target.flags & TypeFlags.TypeParameter) { - return typeParameterIdenticalTo(source, target); - } if (source.flags & TypeFlags.Union && target.flags & TypeFlags.Union || source.flags & TypeFlags.Intersection && target.flags & TypeFlags.Intersection) { if (result = eachTypeRelatedToSomeType(source, target)) { @@ -5206,17 +5203,6 @@ namespace ts { return result; } - function typeParameterIdenticalTo(source: TypeParameter, target: TypeParameter): Ternary { - // covers case when both type parameters does not have constraint (both equal to noConstraintType) - if (source.constraint === target.constraint) { - return Ternary.True; - } - if (source.constraint === noConstraintType || target.constraint === noConstraintType) { - return Ternary.False; - } - return isIdenticalTo(source.constraint, target.constraint); - } - // Determine if two object types are related by structure. First, check if the result is already available in the global cache. // Second, check if we have already started a comparison of the given two types in which case we assume the result to be true. // Third, check if both types are part of deeply nested chains of generic type instantiations and if so assume the types are @@ -5765,26 +5751,19 @@ namespace ts { if (!(isMatchingSignature(source, target, partialMatch))) { return Ternary.False; } - let result = Ternary.True; - if (source.typeParameters && target.typeParameters) { - if (source.typeParameters.length !== target.typeParameters.length) { - return Ternary.False; - } - for (let i = 0, len = source.typeParameters.length; i < len; ++i) { - const related = compareTypes(source.typeParameters[i], target.typeParameters[i]); - if (!related) { - return Ternary.False; - } - result &= related; - } - } - else if (source.typeParameters || target.typeParameters) { + // Check that the two signatures have the same number of type parameters. We might consider + // also checking that any type parameter constraints match, but that would require instantiating + // the constraints with a common set of type arguments to get relatable entities in places where + // type parameters occur in the constraints. The complexity of doing that doesn't seem worthwhile, + // particularly as we're comparing erased versions of the signatures below. + if ((source.typeParameters ? source.typeParameters.length : 0) !== (target.typeParameters ? target.typeParameters.length : 0)) { return Ternary.False; } // Spec 1.0 Section 3.8.3 & 3.8.4: // M and N (the signatures) are instantiated using type Any as the type argument for all type parameters declared by M and N source = getErasedSignature(source); target = getErasedSignature(target); + let result = Ternary.True; const targetLen = target.parameters.length; for (let i = 0; i < targetLen; i++) { const s = isRestParameterIndex(source, i) ? getRestTypeOfSignature(source) : getTypeOfSymbol(source.parameters[i]); From 561360d550de590129fd899452c15d2e5d081d9d Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 2 Dec 2015 10:23:49 -0800 Subject: [PATCH 064/265] Adding regression test --- .../reference/unionTypeParameterInference.js | 14 ++++++++ .../unionTypeParameterInference.symbols | 33 ++++++++++++++++++ .../unionTypeParameterInference.types | 34 +++++++++++++++++++ .../compiler/unionTypeParameterInference.ts | 7 ++++ 4 files changed, 88 insertions(+) create mode 100644 tests/baselines/reference/unionTypeParameterInference.js create mode 100644 tests/baselines/reference/unionTypeParameterInference.symbols create mode 100644 tests/baselines/reference/unionTypeParameterInference.types create mode 100644 tests/cases/compiler/unionTypeParameterInference.ts diff --git a/tests/baselines/reference/unionTypeParameterInference.js b/tests/baselines/reference/unionTypeParameterInference.js new file mode 100644 index 00000000000..cc797c511c8 --- /dev/null +++ b/tests/baselines/reference/unionTypeParameterInference.js @@ -0,0 +1,14 @@ +//// [unionTypeParameterInference.ts] +interface Foo { prop: T; } + +declare function lift(value: U | Foo): Foo; + +function unlift(value: U | Foo): U { + return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. +} + + +//// [unionTypeParameterInference.js] +function unlift(value) { + return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. +} diff --git a/tests/baselines/reference/unionTypeParameterInference.symbols b/tests/baselines/reference/unionTypeParameterInference.symbols new file mode 100644 index 00000000000..ee540379284 --- /dev/null +++ b/tests/baselines/reference/unionTypeParameterInference.symbols @@ -0,0 +1,33 @@ +=== tests/cases/compiler/unionTypeParameterInference.ts === +interface Foo { prop: T; } +>Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) +>T : Symbol(T, Decl(unionTypeParameterInference.ts, 0, 14)) +>prop : Symbol(prop, Decl(unionTypeParameterInference.ts, 0, 18)) +>T : Symbol(T, Decl(unionTypeParameterInference.ts, 0, 14)) + +declare function lift(value: U | Foo): Foo; +>lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 0, 29)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 2, 25)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) + +function unlift(value: U | Foo): U { +>unlift : Symbol(unlift, Decl(unionTypeParameterInference.ts, 2, 52)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 4, 19)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) +>Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) + + return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. +>lift(value).prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 0, 18)) +>lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 0, 29)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 4, 19)) +>prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 0, 18)) +} + diff --git a/tests/baselines/reference/unionTypeParameterInference.types b/tests/baselines/reference/unionTypeParameterInference.types new file mode 100644 index 00000000000..a4b6a09cf2c --- /dev/null +++ b/tests/baselines/reference/unionTypeParameterInference.types @@ -0,0 +1,34 @@ +=== tests/cases/compiler/unionTypeParameterInference.ts === +interface Foo { prop: T; } +>Foo : Foo +>T : T +>prop : T +>T : T + +declare function lift(value: U | Foo): Foo; +>lift : (value: U | Foo) => Foo +>U : U +>value : U | Foo +>U : U +>Foo : Foo +>U : U +>Foo : Foo +>U : U + +function unlift(value: U | Foo): U { +>unlift : (value: U | Foo) => U +>U : U +>value : U | Foo +>U : U +>Foo : Foo +>U : U +>U : U + + return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. +>lift(value).prop : U +>lift(value) : Foo +>lift : (value: U | Foo) => Foo +>value : U | Foo +>prop : U +} + diff --git a/tests/cases/compiler/unionTypeParameterInference.ts b/tests/cases/compiler/unionTypeParameterInference.ts new file mode 100644 index 00000000000..221b0891b98 --- /dev/null +++ b/tests/cases/compiler/unionTypeParameterInference.ts @@ -0,0 +1,7 @@ +interface Foo { prop: T; } + +declare function lift(value: U | Foo): Foo; + +function unlift(value: U | Foo): U { + return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. +} From dfb32c5daeec501ae0817dadceeda1cb0d7a35c5 Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Wed, 2 Dec 2015 11:49:54 -0800 Subject: [PATCH 065/265] Simplified after CR feedback. --- src/compiler/sys.ts | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index 3b75a26a9a0..cd7580119b5 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -477,9 +477,7 @@ namespace ts { newLine: "\r\n", args: ChakraHost.args, useCaseSensitiveFileNames: false, - write(message: string) { - ChakraHost.echo(message); - }, + write: ChakraHost.echo, readFile(path: string, encoding?: string) { // encoding is automatically handled by the implementation in ChakraHost return ChakraHost.readFile(path); @@ -492,30 +490,14 @@ namespace ts { ChakraHost.writeFile(path, data); }, - resolvePath(path: string) { - return ChakraHost.resolvePath(path); - }, - fileExists(path: string) { - return ChakraHost.fileExists(path); - }, - directoryExists(path: string) { - return ChakraHost.directoryExists(path); - }, - createDirectory(path: string) { - ChakraHost.createDirectory(path); - }, - getExecutingFilePath() { - return ChakraHost.executingFile; - }, - getCurrentDirectory() { - return ChakraHost.currentDirectory; - }, - readDirectory(path: string, extension?: string, exclude?: string[]) { - return ChakraHost.readDirectory(path, extension, exclude); - }, - exit(exitCode?: number) { - ChakraHost.quit(exitCode); - } + resolvePath: ChakraHost.resolvePath, + fileExists: ChakraHost.fileExists, + directoryExists: ChakraHost.directoryExists, + createDirectory: ChakraHost.createDirectory, + getExecutingFilePath: () => ChakraHost.executingFile, + getCurrentDirectory: () => ChakraHost.currentDirectory, + readDirectory: ChakraHost.readDirectory, + exit: ChakraHost.quit, }; } From 6116cc9c590222dc001fb97122b3568d9858dfec Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 2 Dec 2015 11:59:53 -0800 Subject: [PATCH 066/265] Duplicate symbol error --- ...FileCompilationBindDuplicateIdentifier.errors.txt | 12 ++++++++++++ .../jsFileCompilationBindDuplicateIdentifier.ts | 6 ++++++ 2 files changed, 18 insertions(+) create mode 100644 tests/baselines/reference/jsFileCompilationBindDuplicateIdentifier.errors.txt create mode 100644 tests/cases/compiler/jsFileCompilationBindDuplicateIdentifier.ts diff --git a/tests/baselines/reference/jsFileCompilationBindDuplicateIdentifier.errors.txt b/tests/baselines/reference/jsFileCompilationBindDuplicateIdentifier.errors.txt new file mode 100644 index 00000000000..2816eaee8b4 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindDuplicateIdentifier.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/a.js(1,5): error TS2300: Duplicate identifier 'a'. +tests/cases/compiler/a.js(2,7): error TS2300: Duplicate identifier 'a'. + + +==== tests/cases/compiler/a.js (2 errors) ==== + var a = 10; + ~ +!!! error TS2300: Duplicate identifier 'a'. + class a { + ~ +!!! error TS2300: Duplicate identifier 'a'. + } \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationBindDuplicateIdentifier.ts b/tests/cases/compiler/jsFileCompilationBindDuplicateIdentifier.ts new file mode 100644 index 00000000000..3433adc17d5 --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationBindDuplicateIdentifier.ts @@ -0,0 +1,6 @@ +// @allowJs: true +// @noEmit: true +// @filename: a.js +var a = 10; +class a { +} \ No newline at end of file From 234527093aab12ce91e496952cfdd5b9145fd432 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 2 Dec 2015 12:00:53 -0800 Subject: [PATCH 067/265] Multiple default exports error. --- ...lationBindMultipleDefaultExports.errors.txt | 18 ++++++++++++++++++ ...ileCompilationBindMultipleDefaultExports.ts | 7 +++++++ 2 files changed, 25 insertions(+) create mode 100644 tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt create mode 100644 tests/cases/compiler/jsFileCompilationBindMultipleDefaultExports.ts diff --git a/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt b/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt new file mode 100644 index 00000000000..733f66922ab --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindMultipleDefaultExports.errors.txt @@ -0,0 +1,18 @@ +tests/cases/compiler/a.js(1,22): error TS2528: A module cannot have multiple default exports. +tests/cases/compiler/a.js(3,1): error TS2528: A module cannot have multiple default exports. +tests/cases/compiler/a.js(3,1): error TS8003: 'export=' can only be used in a .ts file. +tests/cases/compiler/a.js(3,16): error TS1109: Expression expected. + + +==== tests/cases/compiler/a.js (4 errors) ==== + export default class a { + ~ +!!! error TS2528: A module cannot have multiple default exports. + } + export default var a = 10; + ~~~~~~~~~~~~~~ +!!! error TS2528: A module cannot have multiple default exports. + ~~~~~~~~~~~~~~ +!!! error TS8003: 'export=' can only be used in a .ts file. + ~~~ +!!! error TS1109: Expression expected. \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationBindMultipleDefaultExports.ts b/tests/cases/compiler/jsFileCompilationBindMultipleDefaultExports.ts new file mode 100644 index 00000000000..32a9e77fcc7 --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationBindMultipleDefaultExports.ts @@ -0,0 +1,7 @@ +// @allowJs: true +// @noEmit: true +// @filename: a.js +// @target: es6 +export default class a { +} +export default var a = 10; \ No newline at end of file From 469b7fdcbb7d51a46471ca50a90ba08912e7362a Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 2 Dec 2015 12:35:34 -0800 Subject: [PATCH 068/265] Strict mode errors --- ...CompilationBindStrictModeErrors.errors.txt | 70 +++++++++++++++++++ .../jsFileCompilationBindStrictModeErrors.ts | 35 ++++++++++ 2 files changed, 105 insertions(+) create mode 100644 tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt create mode 100644 tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts diff --git a/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt new file mode 100644 index 00000000000..d74dca88664 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt @@ -0,0 +1,70 @@ +tests/cases/compiler/a.js(3,5): error TS2300: Duplicate identifier 'a'. +tests/cases/compiler/a.js(5,5): error TS1117: An object literal cannot have multiple properties with the same name in strict mode. +tests/cases/compiler/a.js(5,5): error TS2300: Duplicate identifier 'a'. +tests/cases/compiler/a.js(8,8): error TS1102: 'delete' cannot be called on an identifier in strict mode. +tests/cases/compiler/a.js(10,10): error TS1100: Invalid use of 'eval' in strict mode. +tests/cases/compiler/a.js(12,10): error TS1100: Invalid use of 'arguments' in strict mode. +tests/cases/compiler/a.js(14,9): error TS1121: Octal literals are not allowed in strict mode. +tests/cases/compiler/a.js(14,11): error TS1005: ',' expected. +tests/cases/compiler/a.js(15,1): error TS1101: 'with' statements are not allowed in strict mode. +tests/cases/compiler/b.js(5,7): error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. +tests/cases/compiler/c.js(1,12): error TS1214: Identifier expected. 'let' is a reserved word in strict mode. Modules are automatically in strict mode. +tests/cases/compiler/c.js(2,5): error TS1215: Invalid use of 'eval'. Modules are automatically in strict mode. + + +==== tests/cases/compiler/a.js (9 errors) ==== + "use strict"; + var a = { + a: "hello", // error + ~ +!!! error TS2300: Duplicate identifier 'a'. + b: 10, + a: 10 // error + ~ +!!! error TS1117: An object literal cannot have multiple properties with the same name in strict mode. + ~ +!!! error TS2300: Duplicate identifier 'a'. + }; + var let = 10; // error + delete a; // error + ~ +!!! error TS1102: 'delete' cannot be called on an identifier in strict mode. + try { + } catch (eval) { // error + ~~~~ +!!! error TS1100: Invalid use of 'eval' in strict mode. + } + function arguments() { // error + ~~~~~~~~~ +!!! error TS1100: Invalid use of 'arguments' in strict mode. + } + var x = 009; + ~~ +!!! error TS1121: Octal literals are not allowed in strict mode. + ~ +!!! error TS1005: ',' expected. + with (a) { + ~~~~ +!!! error TS1101: 'with' statements are not allowed in strict mode. + b = 10; + } + +==== tests/cases/compiler/b.js (1 errors) ==== + // this is not in strict mode but class definitions are always in strict mode + class c { + let() { // error + } + a(eval) { //error + ~~~~ +!!! error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. + } + } + +==== tests/cases/compiler/c.js (2 errors) ==== + export var let = 10; // external modules are automatically in strict mode + ~~~ +!!! error TS1214: Identifier expected. 'let' is a reserved word in strict mode. Modules are automatically in strict mode. + var eval = function () { + ~~~~ +!!! error TS1215: Invalid use of 'eval'. Modules are automatically in strict mode. + }; \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts b/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts new file mode 100644 index 00000000000..c6812522e0c --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts @@ -0,0 +1,35 @@ +// @allowJs: true +// @noEmit: true +// @filename: a.js +// @target: es6 +"use strict"; +var a = { + a: "hello", // error + b: 10, + a: 10 // error +}; +var let = 10; // error +delete a; // error +try { +} catch (eval) { // error +} +function arguments() { // error +} +var x = 009; +with (a) { + b = 10; +} + +// @filename: b.js +// this is not in strict mode but class definitions are always in strict mode +class c { + let() { // error + } + a(eval) { //error + } +} + +// @filename: c.js +export var let = 10; // external modules are automatically in strict mode +var eval = function () { +}; \ No newline at end of file From da8557d672974b31a883d8786a928bd927c5eacf Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 2 Dec 2015 12:49:53 -0800 Subject: [PATCH 069/265] Reachability errors --- ...mpilationBindReachabilityErrors.errors.txt | 31 +++++++++++++++++++ ...jsFileCompilationBindReachabilityErrors.ts | 23 ++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/baselines/reference/jsFileCompilationBindReachabilityErrors.errors.txt create mode 100644 tests/cases/compiler/jsFileCompilationBindReachabilityErrors.ts diff --git a/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.errors.txt b/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.errors.txt new file mode 100644 index 00000000000..a883e66e607 --- /dev/null +++ b/tests/baselines/reference/jsFileCompilationBindReachabilityErrors.errors.txt @@ -0,0 +1,31 @@ +tests/cases/compiler/a.js(3,9): error TS7029: Fallthrough case in switch. +tests/cases/compiler/a.js(16,5): error TS7027: Unreachable code detected. +tests/cases/compiler/a.js(19,1): error TS7028: Unused label. + + +==== tests/cases/compiler/a.js (3 errors) ==== + function foo(a, b) { + switch (a) { + case 10: + ~~~~ +!!! error TS7029: Fallthrough case in switch. + if (b) { + return b; + } + case 20: + return a; + } + } + + function bar() { + return x; + function bar2() { + } + var x = 10; // error + ~~~ +!!! error TS7027: Unreachable code detected. + } + + label1: var x2 = 10; + ~~~~~~ +!!! error TS7028: Unused label. \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationBindReachabilityErrors.ts b/tests/cases/compiler/jsFileCompilationBindReachabilityErrors.ts new file mode 100644 index 00000000000..b95f85c2139 --- /dev/null +++ b/tests/cases/compiler/jsFileCompilationBindReachabilityErrors.ts @@ -0,0 +1,23 @@ +// @allowJs: true +// @noEmit: true +// @filename: a.js +// @noFallthroughCasesInSwitch: true +function foo(a, b) { + switch (a) { + case 10: + if (b) { + return b; + } + case 20: + return a; + } +} + +function bar() { + return x; + function bar2() { + } + var x = 10; // error +} + +label1: var x2 = 10; \ No newline at end of file From 9ffa3cd3e50747fadbf724bb3b3cff5649832a87 Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 2 Dec 2015 13:42:43 -0800 Subject: [PATCH 070/265] Check grammar for let/const declaration for all targets --- src/compiler/checker.ts | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e737cd58bd5..1431a91ff43 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15973,18 +15973,27 @@ namespace ts { : Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - const firstDeclaration = variableList.declarations[0]; - if (firstDeclaration.initializer) { - const diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement - ? Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer - : Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; - return grammarErrorOnNode(firstDeclaration.name, diagnostic); - } - if (firstDeclaration.type) { - const diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement - ? Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation - : Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; - return grammarErrorOnNode(firstDeclaration, diagnostic); + const firstDeclaration = variableList.declarations[0] + + // firstDeclaration can be undefined if there is variable declaration in for-of or for-in + // See http://www.ecma-international.org/ecma-262/6.0/#sec-for-in-and-for-of-statements for details + // For example: + // var let = 10; + // for (let of [1,2,3]) {} // this is invalid ES6 syntax + // for (let in [1,2,3]) {} // this is invalid ES6 syntax + if (firstDeclaration) { + if (firstDeclaration.initializer) { + const diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement + ? Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer + : Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer; + return grammarErrorOnNode(firstDeclaration.name, diagnostic); + } + if (firstDeclaration.type) { + const diagnostic = forInOrOfStatement.kind === SyntaxKind.ForInStatement + ? Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation + : Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation; + return grammarErrorOnNode(firstDeclaration, diagnostic); + } } } } @@ -16172,7 +16181,7 @@ namespace ts { } } - const checkLetConstNames = languageVersion >= ScriptTarget.ES6 && (isLet(node) || isConst(node)); + const checkLetConstNames = (isLet(node) || isConst(node)); // 1. LexicalDeclaration : LetOrConst BindingList ; // It is a Syntax Error if the BoundNames of BindingList contains "let". @@ -16186,7 +16195,7 @@ namespace ts { function checkGrammarNameInLetOrConstDeclarations(name: Identifier | BindingPattern): boolean { if (name.kind === SyntaxKind.Identifier) { - if ((name).text === "let") { + if ((name).originalKeywordKind === SyntaxKind.LetKeyword) { return grammarErrorOnNode(name, Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations); } } From 63ac3cda711541989e2648fe5c1e53046a8baaea Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 2 Dec 2015 13:43:06 -0800 Subject: [PATCH 071/265] All tests for using let --- .../invalidLetInForOfAndForIn_ES5.errors.txt | 22 +++++++++ .../invalidLetInForOfAndForIn_ES5.js | 18 +++++++ .../invalidLetInForOfAndForIn_ES6.errors.txt | 22 +++++++++ .../invalidLetInForOfAndForIn_ES6.js | 18 +++++++ tests/baselines/reference/letAsIdentifier2.js | 6 +++ .../reference/letAsIdentifier2.symbols | 5 ++ .../reference/letAsIdentifier2.types | 5 ++ .../letInConstDeclarations_ES5.errors.txt | 16 +++++++ .../reference/letInConstDeclarations_ES5.js | 15 ++++++ .../letInConstDeclarations_ES6.errors.txt | 16 +++++++ .../reference/letInConstDeclarations_ES6.js | 15 ++++++ ...LetConstDeclOfForOfAndForIn_ES5.errors.txt | 48 +++++++++++++++++++ .../letInLetConstDeclOfForOfAndForIn_ES5.js | 43 +++++++++++++++++ ...LetConstDeclOfForOfAndForIn_ES6.errors.txt | 48 +++++++++++++++++++ .../letInLetConstDeclOfForOfAndForIn_ES6.js | 35 ++++++++++++++ .../letInLetDeclarations_ES5.errors.txt | 16 +++++++ .../reference/letInLetDeclarations_ES5.js | 15 ++++++ .../letInLetDeclarations_ES6.errors.txt | 16 +++++++ .../reference/letInLetDeclarations_ES6.js | 15 ++++++ .../letInLetOrConstDeclarations.errors.txt | 23 --------- .../reference/letInLetOrConstDeclarations.js | 25 ---------- .../reference/letInVarDeclOfForIn_ES5.js | 16 +++++++ .../reference/letInVarDeclOfForIn_ES5.symbols | 11 +++++ .../reference/letInVarDeclOfForIn_ES5.types | 19 ++++++++ .../reference/letInVarDeclOfForIn_ES6.js | 16 +++++++ .../reference/letInVarDeclOfForIn_ES6.symbols | 11 +++++ .../reference/letInVarDeclOfForIn_ES6.types | 19 ++++++++ .../reference/letInVarDeclOfForOf_ES5.js | 20 ++++++++ .../reference/letInVarDeclOfForOf_ES5.symbols | 11 +++++ .../reference/letInVarDeclOfForOf_ES5.types | 19 ++++++++ .../reference/letInVarDeclOfForOf_ES6.js | 16 +++++++ .../reference/letInVarDeclOfForOf_ES6.symbols | 11 +++++ .../reference/letInVarDeclOfForOf_ES6.types | 19 ++++++++ .../strictModeReservedWord.errors.txt | 8 +++- .../compiler/invalidLetInForOfAndForIn_ES5.ts | 10 ++++ .../compiler/invalidLetInForOfAndForIn_ES6.ts | 10 ++++ tests/cases/compiler/letAsIdentifier2.ts | 3 ++ .../compiler/letInConstDeclarations_ES5.ts | 8 ++++ .../compiler/letInConstDeclarations_ES6.ts | 8 ++++ .../letInLetConstDeclOfForOfAndForIn_ES5.ts | 21 ++++++++ .../letInLetConstDeclOfForOfAndForIn_ES6.ts | 21 ++++++++ .../compiler/letInLetDeclarations_ES5.ts | 8 ++++ .../compiler/letInLetDeclarations_ES6.ts | 8 ++++ .../compiler/letInLetOrConstDeclarations.ts | 12 ----- .../cases/compiler/letInVarDeclOfForIn_ES5.ts | 8 ++++ .../cases/compiler/letInVarDeclOfForIn_ES6.ts | 8 ++++ .../cases/compiler/letInVarDeclOfForOf_ES5.ts | 8 ++++ .../cases/compiler/letInVarDeclOfForOf_ES6.ts | 8 ++++ 48 files changed, 718 insertions(+), 61 deletions(-) create mode 100644 tests/baselines/reference/invalidLetInForOfAndForIn_ES5.errors.txt create mode 100644 tests/baselines/reference/invalidLetInForOfAndForIn_ES5.js create mode 100644 tests/baselines/reference/invalidLetInForOfAndForIn_ES6.errors.txt create mode 100644 tests/baselines/reference/invalidLetInForOfAndForIn_ES6.js create mode 100644 tests/baselines/reference/letAsIdentifier2.js create mode 100644 tests/baselines/reference/letAsIdentifier2.symbols create mode 100644 tests/baselines/reference/letAsIdentifier2.types create mode 100644 tests/baselines/reference/letInConstDeclarations_ES5.errors.txt create mode 100644 tests/baselines/reference/letInConstDeclarations_ES5.js create mode 100644 tests/baselines/reference/letInConstDeclarations_ES6.errors.txt create mode 100644 tests/baselines/reference/letInConstDeclarations_ES6.js create mode 100644 tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.errors.txt create mode 100644 tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.js create mode 100644 tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.errors.txt create mode 100644 tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.js create mode 100644 tests/baselines/reference/letInLetDeclarations_ES5.errors.txt create mode 100644 tests/baselines/reference/letInLetDeclarations_ES5.js create mode 100644 tests/baselines/reference/letInLetDeclarations_ES6.errors.txt create mode 100644 tests/baselines/reference/letInLetDeclarations_ES6.js delete mode 100644 tests/baselines/reference/letInLetOrConstDeclarations.errors.txt delete mode 100644 tests/baselines/reference/letInLetOrConstDeclarations.js create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES5.js create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES5.symbols create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES5.types create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES6.js create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES6.symbols create mode 100644 tests/baselines/reference/letInVarDeclOfForIn_ES6.types create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES5.js create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES5.symbols create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES5.types create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES6.js create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES6.symbols create mode 100644 tests/baselines/reference/letInVarDeclOfForOf_ES6.types create mode 100644 tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts create mode 100644 tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts create mode 100644 tests/cases/compiler/letAsIdentifier2.ts create mode 100644 tests/cases/compiler/letInConstDeclarations_ES5.ts create mode 100644 tests/cases/compiler/letInConstDeclarations_ES6.ts create mode 100644 tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts create mode 100644 tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts create mode 100644 tests/cases/compiler/letInLetDeclarations_ES5.ts create mode 100644 tests/cases/compiler/letInLetDeclarations_ES6.ts delete mode 100644 tests/cases/compiler/letInLetOrConstDeclarations.ts create mode 100644 tests/cases/compiler/letInVarDeclOfForIn_ES5.ts create mode 100644 tests/cases/compiler/letInVarDeclOfForIn_ES6.ts create mode 100644 tests/cases/compiler/letInVarDeclOfForOf_ES5.ts create mode 100644 tests/cases/compiler/letInVarDeclOfForOf_ES6.ts diff --git a/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.errors.txt b/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.errors.txt new file mode 100644 index 00000000000..c31b03bae4c --- /dev/null +++ b/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts(5,13): error TS1005: '=' expected. +tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts(5,20): error TS1005: ',' expected. +tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts(7,1): error TS1005: ';' expected. + + +==== tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts (3 errors) ==== + // This should be an error + // More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + + var let = 10; + for (let of [1,2,3]) {} + ~ +!!! error TS1005: '=' expected. + ~ +!!! error TS1005: ',' expected. + + for (let in [1,2,3]) {} + ~~~ +!!! error TS1005: ';' expected. + + + \ No newline at end of file diff --git a/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.js b/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.js new file mode 100644 index 00000000000..729cb246a85 --- /dev/null +++ b/tests/baselines/reference/invalidLetInForOfAndForIn_ES5.js @@ -0,0 +1,18 @@ +//// [invalidLetInForOfAndForIn_ES5.ts] +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + +var let = 10; +for (let of [1,2,3]) {} + +for (let in [1,2,3]) {} + + + + +//// [invalidLetInForOfAndForIn_ES5.js] +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements +var let = 10; +for (let of = [1, 2, 3], { }; ; ) + for ( in [1, 2, 3]) { } diff --git a/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.errors.txt b/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.errors.txt new file mode 100644 index 00000000000..c126e8b7443 --- /dev/null +++ b/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.errors.txt @@ -0,0 +1,22 @@ +tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts(5,13): error TS1005: '=' expected. +tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts(5,20): error TS1005: ',' expected. +tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts(7,1): error TS1005: ';' expected. + + +==== tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts (3 errors) ==== + // This should be an error + // More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + + var let = 10; + for (let of [1,2,3]) {} + ~ +!!! error TS1005: '=' expected. + ~ +!!! error TS1005: ',' expected. + + for (let in [1,2,3]) {} + ~~~ +!!! error TS1005: ';' expected. + + + \ No newline at end of file diff --git a/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.js b/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.js new file mode 100644 index 00000000000..93258d6b225 --- /dev/null +++ b/tests/baselines/reference/invalidLetInForOfAndForIn_ES6.js @@ -0,0 +1,18 @@ +//// [invalidLetInForOfAndForIn_ES6.ts] +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + +var let = 10; +for (let of [1,2,3]) {} + +for (let in [1,2,3]) {} + + + + +//// [invalidLetInForOfAndForIn_ES6.js] +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements +var let = 10; +for (let of = [1, 2, 3], { }; ; ) + for ( in [1, 2, 3]) { } diff --git a/tests/baselines/reference/letAsIdentifier2.js b/tests/baselines/reference/letAsIdentifier2.js new file mode 100644 index 00000000000..62c8461bfc8 --- /dev/null +++ b/tests/baselines/reference/letAsIdentifier2.js @@ -0,0 +1,6 @@ +//// [letAsIdentifier2.ts] + +function let() {} + +//// [letAsIdentifier2.js] +function let() { } diff --git a/tests/baselines/reference/letAsIdentifier2.symbols b/tests/baselines/reference/letAsIdentifier2.symbols new file mode 100644 index 00000000000..211aae05316 --- /dev/null +++ b/tests/baselines/reference/letAsIdentifier2.symbols @@ -0,0 +1,5 @@ +=== tests/cases/compiler/letAsIdentifier2.ts === + +function let() {} +>let : Symbol(let, Decl(letAsIdentifier2.ts, 0, 0)) + diff --git a/tests/baselines/reference/letAsIdentifier2.types b/tests/baselines/reference/letAsIdentifier2.types new file mode 100644 index 00000000000..dc1416fdae9 --- /dev/null +++ b/tests/baselines/reference/letAsIdentifier2.types @@ -0,0 +1,5 @@ +=== tests/cases/compiler/letAsIdentifier2.ts === + +function let() {} +>let : () => void + diff --git a/tests/baselines/reference/letInConstDeclarations_ES5.errors.txt b/tests/baselines/reference/letInConstDeclarations_ES5.errors.txt new file mode 100644 index 00000000000..8b694c35dbb --- /dev/null +++ b/tests/baselines/reference/letInConstDeclarations_ES5.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/letInConstDeclarations_ES5.ts(3,15): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInConstDeclarations_ES5.ts(6,19): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInConstDeclarations_ES5.ts (2 errors) ==== + + // All use of let in const declaration should be an error + const x = 50, let = 5; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + const x = 10, let = 20; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } \ No newline at end of file diff --git a/tests/baselines/reference/letInConstDeclarations_ES5.js b/tests/baselines/reference/letInConstDeclarations_ES5.js new file mode 100644 index 00000000000..f76d49765f0 --- /dev/null +++ b/tests/baselines/reference/letInConstDeclarations_ES5.js @@ -0,0 +1,15 @@ +//// [letInConstDeclarations_ES5.ts] + +// All use of let in const declaration should be an error +const x = 50, let = 5; + +{ + const x = 10, let = 20; +} + +//// [letInConstDeclarations_ES5.js] +// All use of let in const declaration should be an error +var x = 50, let = 5; +{ + var x_1 = 10, let_1 = 20; +} diff --git a/tests/baselines/reference/letInConstDeclarations_ES6.errors.txt b/tests/baselines/reference/letInConstDeclarations_ES6.errors.txt new file mode 100644 index 00000000000..d29f78be014 --- /dev/null +++ b/tests/baselines/reference/letInConstDeclarations_ES6.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/letInConstDeclarations_ES6.ts(3,15): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInConstDeclarations_ES6.ts(6,19): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInConstDeclarations_ES6.ts (2 errors) ==== + + // All use of let in const declaration should be an error + const x = 50, let = 5; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + const x = 10, let = 20; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } \ No newline at end of file diff --git a/tests/baselines/reference/letInConstDeclarations_ES6.js b/tests/baselines/reference/letInConstDeclarations_ES6.js new file mode 100644 index 00000000000..f209ef1dede --- /dev/null +++ b/tests/baselines/reference/letInConstDeclarations_ES6.js @@ -0,0 +1,15 @@ +//// [letInConstDeclarations_ES6.ts] + +// All use of let in const declaration should be an error +const x = 50, let = 5; + +{ + const x = 10, let = 20; +} + +//// [letInConstDeclarations_ES6.js] +// All use of let in const declaration should be an error +const x = 50, let = 5; +{ + const x = 10, let = 20; +} diff --git a/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.errors.txt b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.errors.txt new file mode 100644 index 00000000000..e335a9652f4 --- /dev/null +++ b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.errors.txt @@ -0,0 +1,48 @@ +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(3,10): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(5,12): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(7,10): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(9,12): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(12,11): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(14,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(16,11): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts(18,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts (8 errors) ==== + + // Should be an error + for (let let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (let let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + for (let let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (let let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } + + \ No newline at end of file diff --git a/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.js b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.js new file mode 100644 index 00000000000..4c467176492 --- /dev/null +++ b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES5.js @@ -0,0 +1,43 @@ +//// [letInLetConstDeclOfForOfAndForIn_ES5.ts] + +// Should be an error +for (let let of [1,2,3]) {} + +for (const let of [1,2,3]) {} + +for (let let in [1,2,3]) {} + +for (const let in [1,2,3]) {} + +{ + for (let let of [1,2,3]) {} + + for (const let of [1,2,3]) {} + + for (let let in [1,2,3]) {} + + for (const let in [1,2,3]) {} +} + + + +//// [letInLetConstDeclOfForOfAndForIn_ES5.js] +// Should be an error +for (var _i = 0, _a = [1, 2, 3]; _i < _a.length; _i++) { + var let = _a[_i]; +} +for (var _b = 0, _c = [1, 2, 3]; _b < _c.length; _b++) { + var let = _c[_b]; +} +for (var let in [1, 2, 3]) { } +for (var let in [1, 2, 3]) { } +{ + for (var _d = 0, _e = [1, 2, 3]; _d < _e.length; _d++) { + var let = _e[_d]; + } + for (var _f = 0, _g = [1, 2, 3]; _f < _g.length; _f++) { + var let = _g[_f]; + } + for (var let in [1, 2, 3]) { } + for (var let in [1, 2, 3]) { } +} diff --git a/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.errors.txt b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.errors.txt new file mode 100644 index 00000000000..1a5af892b74 --- /dev/null +++ b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.errors.txt @@ -0,0 +1,48 @@ +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(3,10): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(5,12): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(7,10): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(9,12): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(12,11): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(14,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(16,11): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts(18,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts (8 errors) ==== + + // Should be an error + for (let let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (let let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + for (let let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let of [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (let let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + for (const let in [1,2,3]) {} + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } + + \ No newline at end of file diff --git a/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.js b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.js new file mode 100644 index 00000000000..583dc936871 --- /dev/null +++ b/tests/baselines/reference/letInLetConstDeclOfForOfAndForIn_ES6.js @@ -0,0 +1,35 @@ +//// [letInLetConstDeclOfForOfAndForIn_ES6.ts] + +// Should be an error +for (let let of [1,2,3]) {} + +for (const let of [1,2,3]) {} + +for (let let in [1,2,3]) {} + +for (const let in [1,2,3]) {} + +{ + for (let let of [1,2,3]) {} + + for (const let of [1,2,3]) {} + + for (let let in [1,2,3]) {} + + for (const let in [1,2,3]) {} +} + + + +//// [letInLetConstDeclOfForOfAndForIn_ES6.js] +// Should be an error +for (let let of [1, 2, 3]) { } +for (const let of [1, 2, 3]) { } +for (let let in [1, 2, 3]) { } +for (const let in [1, 2, 3]) { } +{ + for (let let of [1, 2, 3]) { } + for (const let of [1, 2, 3]) { } + for (let let in [1, 2, 3]) { } + for (const let in [1, 2, 3]) { } +} diff --git a/tests/baselines/reference/letInLetDeclarations_ES5.errors.txt b/tests/baselines/reference/letInLetDeclarations_ES5.errors.txt new file mode 100644 index 00000000000..73f824dd7de --- /dev/null +++ b/tests/baselines/reference/letInLetDeclarations_ES5.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/letInLetDeclarations_ES5.ts(3,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetDeclarations_ES5.ts(6,17): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInLetDeclarations_ES5.ts (2 errors) ==== + + // All use of let in const declaration should be an error + let x = 50, let = 5; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + let x = 10, let = 20; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } \ No newline at end of file diff --git a/tests/baselines/reference/letInLetDeclarations_ES5.js b/tests/baselines/reference/letInLetDeclarations_ES5.js new file mode 100644 index 00000000000..0b7f02150a4 --- /dev/null +++ b/tests/baselines/reference/letInLetDeclarations_ES5.js @@ -0,0 +1,15 @@ +//// [letInLetDeclarations_ES5.ts] + +// All use of let in const declaration should be an error +let x = 50, let = 5; + +{ + let x = 10, let = 20; +} + +//// [letInLetDeclarations_ES5.js] +// All use of let in const declaration should be an error +var x = 50, let = 5; +{ + var x_1 = 10, let_1 = 20; +} diff --git a/tests/baselines/reference/letInLetDeclarations_ES6.errors.txt b/tests/baselines/reference/letInLetDeclarations_ES6.errors.txt new file mode 100644 index 00000000000..0fe1aa882e9 --- /dev/null +++ b/tests/baselines/reference/letInLetDeclarations_ES6.errors.txt @@ -0,0 +1,16 @@ +tests/cases/compiler/letInLetDeclarations_ES6.ts(3,13): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. +tests/cases/compiler/letInLetDeclarations_ES6.ts(6,17): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + +==== tests/cases/compiler/letInLetDeclarations_ES6.ts (2 errors) ==== + + // All use of let in const declaration should be an error + let x = 50, let = 5; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + + { + let x = 10, let = 20; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. + } \ No newline at end of file diff --git a/tests/baselines/reference/letInLetDeclarations_ES6.js b/tests/baselines/reference/letInLetDeclarations_ES6.js new file mode 100644 index 00000000000..7c4385cd4d9 --- /dev/null +++ b/tests/baselines/reference/letInLetDeclarations_ES6.js @@ -0,0 +1,15 @@ +//// [letInLetDeclarations_ES6.ts] + +// All use of let in const declaration should be an error +let x = 50, let = 5; + +{ + let x = 10, let = 20; +} + +//// [letInLetDeclarations_ES6.js] +// All use of let in const declaration should be an error +let x = 50, let = 5; +{ + let x = 10, let = 20; +} diff --git a/tests/baselines/reference/letInLetOrConstDeclarations.errors.txt b/tests/baselines/reference/letInLetOrConstDeclarations.errors.txt deleted file mode 100644 index fbcee276583..00000000000 --- a/tests/baselines/reference/letInLetOrConstDeclarations.errors.txt +++ /dev/null @@ -1,23 +0,0 @@ -tests/cases/compiler/letInLetOrConstDeclarations.ts(2,9): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. -tests/cases/compiler/letInLetOrConstDeclarations.ts(3,14): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. -tests/cases/compiler/letInLetOrConstDeclarations.ts(6,11): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. - - -==== tests/cases/compiler/letInLetOrConstDeclarations.ts (3 errors) ==== - { - let let = 1; // should error - ~~~ -!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. - for (let let in []) { } // should error - ~~~ -!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. - } - { - const let = 1; // should error - ~~~ -!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. - } - { - function let() { // should be ok - } - } \ No newline at end of file diff --git a/tests/baselines/reference/letInLetOrConstDeclarations.js b/tests/baselines/reference/letInLetOrConstDeclarations.js deleted file mode 100644 index ee23abc4e4f..00000000000 --- a/tests/baselines/reference/letInLetOrConstDeclarations.js +++ /dev/null @@ -1,25 +0,0 @@ -//// [letInLetOrConstDeclarations.ts] -{ - let let = 1; // should error - for (let let in []) { } // should error -} -{ - const let = 1; // should error -} -{ - function let() { // should be ok - } -} - -//// [letInLetOrConstDeclarations.js] -{ - let let = 1; // should error - for (let let in []) { } // should error -} -{ - const let = 1; // should error -} -{ - function let() { - } -} diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES5.js b/tests/baselines/reference/letInVarDeclOfForIn_ES5.js new file mode 100644 index 00000000000..2cef7610199 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES5.js @@ -0,0 +1,16 @@ +//// [letInVarDeclOfForIn_ES5.ts] + +// should not be an error +for (var let in [1,2,3]) {} + +{ + for (var let in [1,2,3]) {} +} + + +//// [letInVarDeclOfForIn_ES5.js] +// should not be an error +for (var let in [1, 2, 3]) { } +{ + for (var let in [1, 2, 3]) { } +} diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES5.symbols b/tests/baselines/reference/letInVarDeclOfForIn_ES5.symbols new file mode 100644 index 00000000000..cbfd0f58086 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES5.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/letInVarDeclOfForIn_ES5.ts === + +// should not be an error +for (var let in [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForIn_ES5.ts, 2, 8), Decl(letInVarDeclOfForIn_ES5.ts, 5, 9)) + +{ + for (var let in [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForIn_ES5.ts, 2, 8), Decl(letInVarDeclOfForIn_ES5.ts, 5, 9)) +} + diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES5.types b/tests/baselines/reference/letInVarDeclOfForIn_ES5.types new file mode 100644 index 00000000000..ac1ca3f27c9 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES5.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/letInVarDeclOfForIn_ES5.ts === + +// should not be an error +for (var let in [1,2,3]) {} +>let : any +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number + +{ + for (var let in [1,2,3]) {} +>let : any +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number +} + diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES6.js b/tests/baselines/reference/letInVarDeclOfForIn_ES6.js new file mode 100644 index 00000000000..1cf6850f588 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES6.js @@ -0,0 +1,16 @@ +//// [letInVarDeclOfForIn_ES6.ts] + +// should not be an error +for (var let in [1,2,3]) {} + +{ + for (var let in [1,2,3]) {} +} + + +//// [letInVarDeclOfForIn_ES6.js] +// should not be an error +for (var let in [1, 2, 3]) { } +{ + for (var let in [1, 2, 3]) { } +} diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES6.symbols b/tests/baselines/reference/letInVarDeclOfForIn_ES6.symbols new file mode 100644 index 00000000000..3b3e68e3040 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES6.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/letInVarDeclOfForIn_ES6.ts === + +// should not be an error +for (var let in [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForIn_ES6.ts, 2, 8), Decl(letInVarDeclOfForIn_ES6.ts, 5, 9)) + +{ + for (var let in [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForIn_ES6.ts, 2, 8), Decl(letInVarDeclOfForIn_ES6.ts, 5, 9)) +} + diff --git a/tests/baselines/reference/letInVarDeclOfForIn_ES6.types b/tests/baselines/reference/letInVarDeclOfForIn_ES6.types new file mode 100644 index 00000000000..3c508bd8e2b --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForIn_ES6.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/letInVarDeclOfForIn_ES6.ts === + +// should not be an error +for (var let in [1,2,3]) {} +>let : any +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number + +{ + for (var let in [1,2,3]) {} +>let : any +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number +} + diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES5.js b/tests/baselines/reference/letInVarDeclOfForOf_ES5.js new file mode 100644 index 00000000000..cdc374fbea0 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES5.js @@ -0,0 +1,20 @@ +//// [letInVarDeclOfForOf_ES5.ts] + +// should not be an error +for (var let of [1,2,3]) {} + +{ + for (var let of [1,2,3]) {} +} + + +//// [letInVarDeclOfForOf_ES5.js] +// should not be an error +for (var _i = 0, _a = [1, 2, 3]; _i < _a.length; _i++) { + var let = _a[_i]; +} +{ + for (var _b = 0, _c = [1, 2, 3]; _b < _c.length; _b++) { + var let = _c[_b]; + } +} diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES5.symbols b/tests/baselines/reference/letInVarDeclOfForOf_ES5.symbols new file mode 100644 index 00000000000..f5411cfca2d --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES5.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/letInVarDeclOfForOf_ES5.ts === + +// should not be an error +for (var let of [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForOf_ES5.ts, 2, 8), Decl(letInVarDeclOfForOf_ES5.ts, 5, 9)) + +{ + for (var let of [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForOf_ES5.ts, 2, 8), Decl(letInVarDeclOfForOf_ES5.ts, 5, 9)) +} + diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES5.types b/tests/baselines/reference/letInVarDeclOfForOf_ES5.types new file mode 100644 index 00000000000..a1000df8bed --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES5.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/letInVarDeclOfForOf_ES5.ts === + +// should not be an error +for (var let of [1,2,3]) {} +>let : number +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number + +{ + for (var let of [1,2,3]) {} +>let : number +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number +} + diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES6.js b/tests/baselines/reference/letInVarDeclOfForOf_ES6.js new file mode 100644 index 00000000000..fca365c4b0d --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES6.js @@ -0,0 +1,16 @@ +//// [letInVarDeclOfForOf_ES6.ts] + +// should not be an error +for (var let of [1,2,3]) {} + +{ + for (var let of [1,2,3]) {} +} + + +//// [letInVarDeclOfForOf_ES6.js] +// should not be an error +for (var let of [1, 2, 3]) { } +{ + for (var let of [1, 2, 3]) { } +} diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES6.symbols b/tests/baselines/reference/letInVarDeclOfForOf_ES6.symbols new file mode 100644 index 00000000000..d4c14eff0b0 --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES6.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/letInVarDeclOfForOf_ES6.ts === + +// should not be an error +for (var let of [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForOf_ES6.ts, 2, 8), Decl(letInVarDeclOfForOf_ES6.ts, 5, 9)) + +{ + for (var let of [1,2,3]) {} +>let : Symbol(let, Decl(letInVarDeclOfForOf_ES6.ts, 2, 8), Decl(letInVarDeclOfForOf_ES6.ts, 5, 9)) +} + diff --git a/tests/baselines/reference/letInVarDeclOfForOf_ES6.types b/tests/baselines/reference/letInVarDeclOfForOf_ES6.types new file mode 100644 index 00000000000..1515895feda --- /dev/null +++ b/tests/baselines/reference/letInVarDeclOfForOf_ES6.types @@ -0,0 +1,19 @@ +=== tests/cases/compiler/letInVarDeclOfForOf_ES6.ts === + +// should not be an error +for (var let of [1,2,3]) {} +>let : number +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number + +{ + for (var let of [1,2,3]) {} +>let : number +>[1,2,3] : number[] +>1 : number +>2 : number +>3 : number +} + diff --git a/tests/baselines/reference/strictModeReservedWord.errors.txt b/tests/baselines/reference/strictModeReservedWord.errors.txt index 6f6a387429d..02ece81a1d9 100644 --- a/tests/baselines/reference/strictModeReservedWord.errors.txt +++ b/tests/baselines/reference/strictModeReservedWord.errors.txt @@ -1,6 +1,8 @@ +tests/cases/compiler/strictModeReservedWord.ts(1,5): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. tests/cases/compiler/strictModeReservedWord.ts(5,9): error TS1212: Identifier expected. 'public' is a reserved word in strict mode tests/cases/compiler/strictModeReservedWord.ts(6,9): error TS1212: Identifier expected. 'static' is a reserved word in strict mode tests/cases/compiler/strictModeReservedWord.ts(7,9): error TS1212: Identifier expected. 'let' is a reserved word in strict mode +tests/cases/compiler/strictModeReservedWord.ts(7,9): error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. tests/cases/compiler/strictModeReservedWord.ts(8,9): error TS1212: Identifier expected. 'package' is a reserved word in strict mode tests/cases/compiler/strictModeReservedWord.ts(8,9): error TS2300: Duplicate identifier 'package'. tests/cases/compiler/strictModeReservedWord.ts(9,14): error TS1212: Identifier expected. 'package' is a reserved word in strict mode @@ -41,8 +43,10 @@ tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS1212: Identifier e tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invoke an expression whose type lacks a call signature. -==== tests/cases/compiler/strictModeReservedWord.ts (41 errors) ==== +==== tests/cases/compiler/strictModeReservedWord.ts (43 errors) ==== let let = 10; + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. function foo() { "use strict" @@ -55,6 +59,8 @@ tests/cases/compiler/strictModeReservedWord.ts(24,5): error TS2349: Cannot invok let let = "blah"; ~~~ !!! error TS1212: Identifier expected. 'let' is a reserved word in strict mode + ~~~ +!!! error TS2480: 'let' is not allowed to be used as a name in 'let' or 'const' declarations. var package = "hello" ~~~~~~~ !!! error TS1212: Identifier expected. 'package' is a reserved word in strict mode diff --git a/tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts b/tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts new file mode 100644 index 00000000000..03a01204462 --- /dev/null +++ b/tests/cases/compiler/invalidLetInForOfAndForIn_ES5.ts @@ -0,0 +1,10 @@ +// @target: es6 +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + +var let = 10; +for (let of [1,2,3]) {} + +for (let in [1,2,3]) {} + + diff --git a/tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts b/tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts new file mode 100644 index 00000000000..03a01204462 --- /dev/null +++ b/tests/cases/compiler/invalidLetInForOfAndForIn_ES6.ts @@ -0,0 +1,10 @@ +// @target: es6 +// This should be an error +// More details: http://www.ecma-international.org/ecma-262/6.0/#sec-iteration-statements + +var let = 10; +for (let of [1,2,3]) {} + +for (let in [1,2,3]) {} + + diff --git a/tests/cases/compiler/letAsIdentifier2.ts b/tests/cases/compiler/letAsIdentifier2.ts new file mode 100644 index 00000000000..7ebbeb0704b --- /dev/null +++ b/tests/cases/compiler/letAsIdentifier2.ts @@ -0,0 +1,3 @@ +// @target: es6 + +function let() {} \ No newline at end of file diff --git a/tests/cases/compiler/letInConstDeclarations_ES5.ts b/tests/cases/compiler/letInConstDeclarations_ES5.ts new file mode 100644 index 00000000000..2898abd1e2a --- /dev/null +++ b/tests/cases/compiler/letInConstDeclarations_ES5.ts @@ -0,0 +1,8 @@ +// @target: es5 + +// All use of let in const declaration should be an error +const x = 50, let = 5; + +{ + const x = 10, let = 20; +} \ No newline at end of file diff --git a/tests/cases/compiler/letInConstDeclarations_ES6.ts b/tests/cases/compiler/letInConstDeclarations_ES6.ts new file mode 100644 index 00000000000..aac2a592d11 --- /dev/null +++ b/tests/cases/compiler/letInConstDeclarations_ES6.ts @@ -0,0 +1,8 @@ +// @target: es6 + +// All use of let in const declaration should be an error +const x = 50, let = 5; + +{ + const x = 10, let = 20; +} \ No newline at end of file diff --git a/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts b/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts new file mode 100644 index 00000000000..7e8b6824329 --- /dev/null +++ b/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES5.ts @@ -0,0 +1,21 @@ +// @target: es5 + +// Should be an error +for (let let of [1,2,3]) {} + +for (const let of [1,2,3]) {} + +for (let let in [1,2,3]) {} + +for (const let in [1,2,3]) {} + +{ + for (let let of [1,2,3]) {} + + for (const let of [1,2,3]) {} + + for (let let in [1,2,3]) {} + + for (const let in [1,2,3]) {} +} + diff --git a/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts b/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts new file mode 100644 index 00000000000..68ba1716199 --- /dev/null +++ b/tests/cases/compiler/letInLetConstDeclOfForOfAndForIn_ES6.ts @@ -0,0 +1,21 @@ +// @target: es6 + +// Should be an error +for (let let of [1,2,3]) {} + +for (const let of [1,2,3]) {} + +for (let let in [1,2,3]) {} + +for (const let in [1,2,3]) {} + +{ + for (let let of [1,2,3]) {} + + for (const let of [1,2,3]) {} + + for (let let in [1,2,3]) {} + + for (const let in [1,2,3]) {} +} + diff --git a/tests/cases/compiler/letInLetDeclarations_ES5.ts b/tests/cases/compiler/letInLetDeclarations_ES5.ts new file mode 100644 index 00000000000..8d4a71b85c8 --- /dev/null +++ b/tests/cases/compiler/letInLetDeclarations_ES5.ts @@ -0,0 +1,8 @@ +// @target: es5 + +// All use of let in const declaration should be an error +let x = 50, let = 5; + +{ + let x = 10, let = 20; +} \ No newline at end of file diff --git a/tests/cases/compiler/letInLetDeclarations_ES6.ts b/tests/cases/compiler/letInLetDeclarations_ES6.ts new file mode 100644 index 00000000000..8c4650dd938 --- /dev/null +++ b/tests/cases/compiler/letInLetDeclarations_ES6.ts @@ -0,0 +1,8 @@ +// @target: es6 + +// All use of let in const declaration should be an error +let x = 50, let = 5; + +{ + let x = 10, let = 20; +} \ No newline at end of file diff --git a/tests/cases/compiler/letInLetOrConstDeclarations.ts b/tests/cases/compiler/letInLetOrConstDeclarations.ts deleted file mode 100644 index c622759a459..00000000000 --- a/tests/cases/compiler/letInLetOrConstDeclarations.ts +++ /dev/null @@ -1,12 +0,0 @@ -// @target: es6 -{ - let let = 1; // should error - for (let let in []) { } // should error -} -{ - const let = 1; // should error -} -{ - function let() { // should be ok - } -} \ No newline at end of file diff --git a/tests/cases/compiler/letInVarDeclOfForIn_ES5.ts b/tests/cases/compiler/letInVarDeclOfForIn_ES5.ts new file mode 100644 index 00000000000..684dc3b2e9f --- /dev/null +++ b/tests/cases/compiler/letInVarDeclOfForIn_ES5.ts @@ -0,0 +1,8 @@ +// @target: es5 + +// should not be an error +for (var let in [1,2,3]) {} + +{ + for (var let in [1,2,3]) {} +} diff --git a/tests/cases/compiler/letInVarDeclOfForIn_ES6.ts b/tests/cases/compiler/letInVarDeclOfForIn_ES6.ts new file mode 100644 index 00000000000..8d79f41713e --- /dev/null +++ b/tests/cases/compiler/letInVarDeclOfForIn_ES6.ts @@ -0,0 +1,8 @@ +// @target: es6 + +// should not be an error +for (var let in [1,2,3]) {} + +{ + for (var let in [1,2,3]) {} +} diff --git a/tests/cases/compiler/letInVarDeclOfForOf_ES5.ts b/tests/cases/compiler/letInVarDeclOfForOf_ES5.ts new file mode 100644 index 00000000000..2d369aa162e --- /dev/null +++ b/tests/cases/compiler/letInVarDeclOfForOf_ES5.ts @@ -0,0 +1,8 @@ +// @target: es5 + +// should not be an error +for (var let of [1,2,3]) {} + +{ + for (var let of [1,2,3]) {} +} diff --git a/tests/cases/compiler/letInVarDeclOfForOf_ES6.ts b/tests/cases/compiler/letInVarDeclOfForOf_ES6.ts new file mode 100644 index 00000000000..9e343a45f4b --- /dev/null +++ b/tests/cases/compiler/letInVarDeclOfForOf_ES6.ts @@ -0,0 +1,8 @@ +// @target: es6 + +// should not be an error +for (var let of [1,2,3]) {} + +{ + for (var let of [1,2,3]) {} +} From 135e091c2acc81325f0d205db253e45b75d0c18c Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 2 Dec 2015 13:45:52 -0800 Subject: [PATCH 072/265] Add more tests --- ... quickInfoForTypeParameterInTypeAlias1.ts} | 14 ++--------- .../quickInfoForTypeParameterInTypeAlias2.ts | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) rename tests/cases/fourslash/{quickInfoForTypeParameterInTypeAlias.ts => quickInfoForTypeParameterInTypeAlias1.ts} (59%) create mode 100644 tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts diff --git a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias1.ts similarity index 59% rename from tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts rename to tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias1.ts index 7259a299a7b..7f5f6df4d5b 100644 --- a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias.ts +++ b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias1.ts @@ -5,9 +5,7 @@ //// type NestedCtor = new() => AA & (new () => AA & { constructor: NestedCtor }); //// type Method = { method(): A/*4*/A }; //// type Construct = { new(): A/*5*/A }; -//// type Call = { (): A/*6*/A }; -//// type Index = {[foo: string]: A/*7*/A}; -//// type GenericMethod = { method(): A/*8*/A & B/*9*/B } + goTo.marker('1'); verify.quickInfoIs('(type parameter) AA in type Ctor'); @@ -18,12 +16,4 @@ verify.quickInfoIs('(type parameter) AA in type NestedCtor'); goTo.marker('4'); verify.quickInfoIs('(type parameter) AA in type Method'); goTo.marker('5'); -verify.quickInfoIs('(type parameter) AA in type Construct'); -goTo.marker('6'); -verify.quickInfoIs('(type parameter) AA in type Call'); -goTo.marker('7'); -verify.quickInfoIs('(type parameter) AA in type Index'); -goTo.marker('8'); -verify.quickInfoIs('(type parameter) AA in type GenericMethod'); -goTo.marker('9'); -verify.quickInfoIs('(type parameter) BB in method(): AA & BB'); \ No newline at end of file +verify.quickInfoIs('(type parameter) AA in type Construct'); \ No newline at end of file diff --git a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts new file mode 100644 index 00000000000..9a3682bf3bc --- /dev/null +++ b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts @@ -0,0 +1,24 @@ +/// + +//// type Call = { (): A/*1*/A }; +//// type Index = {[foo: string]: A/*2*/A}; +//// type GenericMethod = { method(): A/*3*/A & B/*4*/B } +//// type Nesting = { method(): new () => T/*5*/T & U/*6*/U & W/*7*/W }; + +type Nesting = { method(): new () => TT & UU & WW } + +goTo.marker('1'); +verify.quickInfoIs('(type parameter) AA in type Call'); +goTo.marker('2'); +verify.quickInfoIs('(type parameter) AA in type Index'); +goTo.marker('3'); +verify.quickInfoIs('(type parameter) AA in type GenericMethod'); +goTo.marker('4'); +verify.quickInfoIs('(type parameter) BB in method(): AA & BB'); +goTo.marker('5'); +verify.quickInfoIs('(type parameter) TT in type Nesting'); +goTo.marker('6'); +verify.quickInfoIs('(type parameter) UU in method(): new () => TT & UU & WW'); +goTo.marker('7'); +verify.quickInfoIs('(type parameter) WW in (): TT & UU & WW'); + From f83817a4884940ddc6e3144965ac91e3652df0ba Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 2 Dec 2015 13:47:19 -0800 Subject: [PATCH 073/265] remove line and unused code --- tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts index 9a3682bf3bc..89a648470d6 100644 --- a/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts +++ b/tests/cases/fourslash/quickInfoForTypeParameterInTypeAlias2.ts @@ -5,8 +5,6 @@ //// type GenericMethod = { method(): A/*3*/A & B/*4*/B } //// type Nesting = { method(): new () => T/*5*/T & U/*6*/U & W/*7*/W }; -type Nesting = { method(): new () => TT & UU & WW } - goTo.marker('1'); verify.quickInfoIs('(type parameter) AA in type Call'); goTo.marker('2'); From 58a83f1e45ddaa7a289c24bc84f870b7b0500203 Mon Sep 17 00:00:00 2001 From: Yui T Date: Wed, 2 Dec 2015 13:57:10 -0800 Subject: [PATCH 074/265] Fix linter error --- src/compiler/checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1431a91ff43..5063cb6dea2 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15973,7 +15973,7 @@ namespace ts { : Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement; return grammarErrorOnFirstToken(variableList.declarations[1], diagnostic); } - const firstDeclaration = variableList.declarations[0] + const firstDeclaration = variableList.declarations[0]; // firstDeclaration can be undefined if there is variable declaration in for-of or for-in // See http://www.ecma-international.org/ecma-262/6.0/#sec-for-in-and-for-of-statements for details From 4fcb53b2536d4e29e9da7cb245e2388a200c4b24 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 2 Dec 2015 14:00:34 -0800 Subject: [PATCH 075/265] Strict mode errors --- ...CompilationBindStrictModeErrors.errors.txt | 37 ++++++++++++------- .../jsFileCompilationBindStrictModeErrors.ts | 13 +++++-- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt index d74dca88664..65dffb5a08e 100644 --- a/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt +++ b/tests/baselines/reference/jsFileCompilationBindStrictModeErrors.errors.txt @@ -1,18 +1,20 @@ tests/cases/compiler/a.js(3,5): error TS2300: Duplicate identifier 'a'. tests/cases/compiler/a.js(5,5): error TS1117: An object literal cannot have multiple properties with the same name in strict mode. tests/cases/compiler/a.js(5,5): error TS2300: Duplicate identifier 'a'. +tests/cases/compiler/a.js(7,5): error TS1212: Identifier expected. 'let' is a reserved word in strict mode tests/cases/compiler/a.js(8,8): error TS1102: 'delete' cannot be called on an identifier in strict mode. tests/cases/compiler/a.js(10,10): error TS1100: Invalid use of 'eval' in strict mode. tests/cases/compiler/a.js(12,10): error TS1100: Invalid use of 'arguments' in strict mode. -tests/cases/compiler/a.js(14,9): error TS1121: Octal literals are not allowed in strict mode. -tests/cases/compiler/a.js(14,11): error TS1005: ',' expected. tests/cases/compiler/a.js(15,1): error TS1101: 'with' statements are not allowed in strict mode. -tests/cases/compiler/b.js(5,7): error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. +tests/cases/compiler/b.js(3,7): error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. +tests/cases/compiler/b.js(6,13): error TS1213: Identifier expected. 'let' is a reserved word in strict mode. Class definitions are automatically in strict mode. tests/cases/compiler/c.js(1,12): error TS1214: Identifier expected. 'let' is a reserved word in strict mode. Modules are automatically in strict mode. tests/cases/compiler/c.js(2,5): error TS1215: Invalid use of 'eval'. Modules are automatically in strict mode. +tests/cases/compiler/d.js(2,9): error TS1121: Octal literals are not allowed in strict mode. +tests/cases/compiler/d.js(2,11): error TS1005: ',' expected. -==== tests/cases/compiler/a.js (9 errors) ==== +==== tests/cases/compiler/a.js (8 errors) ==== "use strict"; var a = { a: "hello", // error @@ -26,6 +28,8 @@ tests/cases/compiler/c.js(2,5): error TS1215: Invalid use of 'eval'. Modules are !!! error TS2300: Duplicate identifier 'a'. }; var let = 10; // error + ~~~ +!!! error TS1212: Identifier expected. 'let' is a reserved word in strict mode delete a; // error ~ !!! error TS1102: 'delete' cannot be called on an identifier in strict mode. @@ -38,26 +42,25 @@ tests/cases/compiler/c.js(2,5): error TS1215: Invalid use of 'eval'. Modules are ~~~~~~~~~ !!! error TS1100: Invalid use of 'arguments' in strict mode. } - var x = 009; - ~~ -!!! error TS1121: Octal literals are not allowed in strict mode. - ~ -!!! error TS1005: ',' expected. + with (a) { ~~~~ !!! error TS1101: 'with' statements are not allowed in strict mode. b = 10; } -==== tests/cases/compiler/b.js (1 errors) ==== +==== tests/cases/compiler/b.js (2 errors) ==== // this is not in strict mode but class definitions are always in strict mode class c { - let() { // error - } a(eval) { //error ~~~~ !!! error TS1210: Invalid use of 'eval'. Class definitions are automatically in strict mode. } + method() { + var let = 10; // error + ~~~ +!!! error TS1213: Identifier expected. 'let' is a reserved word in strict mode. Class definitions are automatically in strict mode. + } } ==== tests/cases/compiler/c.js (2 errors) ==== @@ -67,4 +70,12 @@ tests/cases/compiler/c.js(2,5): error TS1215: Invalid use of 'eval'. Modules are var eval = function () { ~~~~ !!! error TS1215: Invalid use of 'eval'. Modules are automatically in strict mode. - }; \ No newline at end of file + }; + +==== tests/cases/compiler/d.js (2 errors) ==== + "use strict"; + var x = 009; // error + ~~ +!!! error TS1121: Octal literals are not allowed in strict mode. + ~ +!!! error TS1005: ',' expected. \ No newline at end of file diff --git a/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts b/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts index c6812522e0c..30b43b1990e 100644 --- a/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts +++ b/tests/cases/compiler/jsFileCompilationBindStrictModeErrors.ts @@ -15,7 +15,7 @@ try { } function arguments() { // error } -var x = 009; + with (a) { b = 10; } @@ -23,13 +23,18 @@ with (a) { // @filename: b.js // this is not in strict mode but class definitions are always in strict mode class c { - let() { // error - } a(eval) { //error } + method() { + var let = 10; // error + } } // @filename: c.js export var let = 10; // external modules are automatically in strict mode var eval = function () { -}; \ No newline at end of file +}; + +//@filename: d.js +"use strict"; +var x = 009; // error \ No newline at end of file From c82fe8631513bf9940093b9c9d8d2f6426a3a1dc Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 2 Dec 2015 15:16:04 -0800 Subject: [PATCH 076/265] Remove apparent type of primitives from errors And accept baselines --- src/compiler/checker.ts | 11 +++++++++-- tests/baselines/reference/assignToFn.errors.txt | 2 -- .../baselines/reference/assignmentToObject.errors.txt | 2 -- .../assignmentToObjectAndFunction.errors.txt | 6 +----- ...bstractAssignabilityConstructorFunction.errors.txt | 4 +--- .../baselines/reference/contextualTyping24.errors.txt | 4 +--- .../baselines/reference/enumAssignability.errors.txt | 6 ------ tests/baselines/reference/for-of30.errors.txt | 2 -- ...nericCallWithGenericSignatureArguments3.errors.txt | 4 +--- .../baselines/reference/incompatibleTypes.errors.txt | 2 -- ...heritanceMemberAccessorOverridingMethod.errors.txt | 2 -- ...heritanceStaticAccessorOverridingMethod.errors.txt | 2 -- ...heritanceStaticPropertyOverridingMethod.errors.txt | 2 -- tests/baselines/reference/intTypeCheck.errors.txt | 8 -------- .../reference/invalidBooleanAssignments.errors.txt | 2 -- .../reference/recursiveFunctionTypes.errors.txt | 10 ---------- tests/baselines/reference/typeName1.errors.txt | 4 ---- 17 files changed, 13 insertions(+), 60 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 06b0b603d02..577e546868f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -376,6 +376,14 @@ namespace ts { return node.kind === SyntaxKind.SourceFile && !isExternalOrCommonJsModule(node); } + /** Is this type one of the apparent types created from the primitive types. */ + function isPrimitiveApparentType(type: Type): boolean { + return type === globalStringType || + type === globalNumberType || + type === globalBooleanType || + type === globalESSymbolType; + } + function getSymbol(symbols: SymbolTable, name: string, meaning: SymbolFlags): Symbol { if (meaning && hasProperty(symbols, name)) { const symbol = symbols[name]; @@ -5441,7 +5449,6 @@ namespace ts { if (!t.hasStringLiterals || target.flags & TypeFlags.FromSignature) { // Only elaborate errors from the first failure let shouldElaborateErrors = reportErrors; - const checkedAbstractAssignability = false; for (const s of sourceSignatures) { if (!s.hasStringLiterals || source.flags & TypeFlags.FromSignature) { const related = signatureRelatedTo(s, t, shouldElaborateErrors); @@ -5453,7 +5460,7 @@ namespace ts { shouldElaborateErrors = false; } } - if (shouldElaborateErrors) { + if (shouldElaborateErrors && !isPrimitiveApparentType(source)) { reportError(Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), signatureToString(t, /*enclosingDeclaration*/ undefined, /*flags*/ undefined, kind)); diff --git a/tests/baselines/reference/assignToFn.errors.txt b/tests/baselines/reference/assignToFn.errors.txt index 0456a6faa5e..7f2c7855a35 100644 --- a/tests/baselines/reference/assignToFn.errors.txt +++ b/tests/baselines/reference/assignToFn.errors.txt @@ -1,5 +1,4 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. - Type 'String' provides no match for the signature '(n: number): boolean' ==== tests/cases/compiler/assignToFn.ts (1 errors) ==== @@ -13,6 +12,5 @@ tests/cases/compiler/assignToFn.ts(8,5): error TS2322: Type 'string' is not assi x.f="hello"; ~~~ !!! error TS2322: Type 'string' is not assignable to type '(n: number) => boolean'. -!!! error TS2322: Type 'String' provides no match for the signature '(n: number): boolean' } \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObject.errors.txt b/tests/baselines/reference/assignmentToObject.errors.txt index ff5c9c12653..aa1222bd799 100644 --- a/tests/baselines/reference/assignmentToObject.errors.txt +++ b/tests/baselines/reference/assignmentToObject.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. - Type 'Number' provides no match for the signature '(): string' ==== tests/cases/compiler/assignmentToObject.ts (1 errors) ==== @@ -12,5 +11,4 @@ tests/cases/compiler/assignmentToObject.ts(3,5): error TS2322: Type '{ toString: !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): string' \ No newline at end of file diff --git a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt index e13dc8f1f64..2e85ee101f5 100644 --- a/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt +++ b/tests/baselines/reference/assignmentToObjectAndFunction.errors.txt @@ -1,13 +1,11 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(1,5): error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. Types of property 'toString' are incompatible. Type 'number' is not assignable to type '() => string'. - Type 'Number' provides no match for the signature '(): string' tests/cases/compiler/assignmentToObjectAndFunction.ts(8,5): error TS2322: Type '{}' is not assignable to type 'Function'. Property 'apply' is missing in type '{}'. tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type 'typeof bad' is not assignable to type 'Function'. Types of property 'apply' are incompatible. Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. - Type 'Number' provides no match for the signature '(thisArg: any, argArray?: any): any' ==== tests/cases/compiler/assignmentToObjectAndFunction.ts (3 errors) ==== @@ -16,7 +14,6 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type !!! error TS2322: Type '{ toString: number; }' is not assignable to type 'Object'. !!! error TS2322: Types of property 'toString' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): string' var goodObj: Object = { toString(x?) { return ""; @@ -51,5 +48,4 @@ tests/cases/compiler/assignmentToObjectAndFunction.ts(29,5): error TS2322: Type ~~~~~~~~~~ !!! error TS2322: Type 'typeof bad' is not assignable to type 'Function'. !!! error TS2322: Types of property 'apply' are incompatible. -!!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. -!!! error TS2322: Type 'Number' provides no match for the signature '(thisArg: any, argArray?: any): any' \ No newline at end of file +!!! error TS2322: Type 'number' is not assignable to type '(thisArg: any, argArray?: any) => any'. \ No newline at end of file diff --git a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt index 760bc9d8c43..c6c242396d8 100644 --- a/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt +++ b/tests/baselines/reference/classAbstractAssignabilityConstructorFunction.errors.txt @@ -1,7 +1,6 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(7,1): error TS2322: Type 'typeof A' is not assignable to type 'new () => A'. Cannot assign an abstract constructor type to a non-abstract constructor type. tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts(8,1): error TS2322: Type 'string' is not assignable to type 'new () => A'. - Type 'String' provides no match for the signature 'new (): A' ==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractAssignabilityConstructorFunction.ts (2 errors) ==== @@ -17,5 +16,4 @@ tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbst !!! error TS2322: Cannot assign an abstract constructor type to a non-abstract constructor type. AAA = "asdf"; ~~~ -!!! error TS2322: Type 'string' is not assignable to type 'new () => A'. -!!! error TS2322: Type 'String' provides no match for the signature 'new (): A' \ No newline at end of file +!!! error TS2322: Type 'string' is not assignable to type 'new () => A'. \ No newline at end of file diff --git a/tests/baselines/reference/contextualTyping24.errors.txt b/tests/baselines/reference/contextualTyping24.errors.txt index 57a5543e57a..a172600e1c5 100644 --- a/tests/baselines/reference/contextualTyping24.errors.txt +++ b/tests/baselines/reference/contextualTyping24.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. Types of parameters 'a' and 'a' are incompatible. Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. - Type 'String' provides no match for the signature '(): number' ==== tests/cases/compiler/contextualTyping24.ts (1 errors) ==== @@ -9,5 +8,4 @@ tests/cases/compiler/contextualTyping24.ts(1,55): error TS2322: Type '(a: string ~~~ !!! error TS2322: Type '(a: string) => number' is not assignable to type '(a: { (): number; (i: number): number; }) => number'. !!! error TS2322: Types of parameters 'a' and 'a' are incompatible. -!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. -!!! error TS2322: Type 'String' provides no match for the signature '(): number' \ No newline at end of file +!!! error TS2322: Type 'string' is not assignable to type '{ (): number; (i: number): number; }'. \ No newline at end of file diff --git a/tests/baselines/reference/enumAssignability.errors.txt b/tests/baselines/reference/enumAssignability.errors.txt index 5b12f6f941e..4a060ac3456 100644 --- a/tests/baselines/reference/enumAssignability.errors.txt +++ b/tests/baselines/reference/enumAssignability.errors.txt @@ -6,11 +6,9 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi Property 'toDateString' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(33,9): error TS2322: Type 'E' is not assignable to type 'void'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(36,9): error TS2322: Type 'E' is not assignable to type '() => {}'. - Type 'Number' provides no match for the signature '(): {}' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(37,9): error TS2322: Type 'E' is not assignable to type 'Function'. Property 'apply' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(38,9): error TS2322: Type 'E' is not assignable to type '(x: number) => string'. - Type 'Number' provides no match for the signature '(x: number): string' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(39,5): error TS2322: Type 'E' is not assignable to type 'C'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(40,5): error TS2322: Type 'E' is not assignable to type 'I'. @@ -20,7 +18,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(42,9): error TS2322: Type 'E' is not assignable to type '{ foo: string; }'. Property 'foo' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(43,9): error TS2322: Type 'E' is not assignable to type '(x: T) => T'. - Type 'Number' provides no match for the signature '(x: T): T' tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(45,9): error TS2322: Type 'E' is not assignable to type 'String'. Property 'charAt' is missing in type 'Number'. tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssignability.ts(47,21): error TS2313: Constraint of a type parameter cannot reference any type parameter from the same type parameter list. @@ -83,7 +80,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var j: () => {} = e; ~ !!! error TS2322: Type 'E' is not assignable to type '() => {}'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): {}' var k: Function = e; ~ !!! error TS2322: Type 'E' is not assignable to type 'Function'. @@ -91,7 +87,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var l: (x: number) => string = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: number) => string'. -!!! error TS2322: Type 'Number' provides no match for the signature '(x: number): string' ac = e; ~~ !!! error TS2322: Type 'E' is not assignable to type 'C'. @@ -111,7 +106,6 @@ tests/cases/conformance/types/typeRelationships/assignmentCompatibility/enumAssi var o: (x: T) => T = e; ~ !!! error TS2322: Type 'E' is not assignable to type '(x: T) => T'. -!!! error TS2322: Type 'Number' provides no match for the signature '(x: T): T' var p: Number = e; var q: String = e; ~ diff --git a/tests/baselines/reference/for-of30.errors.txt b/tests/baselines/reference/for-of30.errors.txt index 528d14cf12b..6434b5294d5 100644 --- a/tests/baselines/reference/for-of30.errors.txt +++ b/tests/baselines/reference/for-of30.errors.txt @@ -4,7 +4,6 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty Type 'StringIterator' is not assignable to type 'Iterator'. Types of property 'return' are incompatible. Type 'number' is not assignable to type '(value?: any) => IteratorResult'. - Type 'Number' provides no match for the signature '(value?: any): IteratorResult' ==== tests/cases/conformance/es6/for-ofStatements/for-of30.ts (1 errors) ==== @@ -16,7 +15,6 @@ tests/cases/conformance/es6/for-ofStatements/for-of30.ts(1,15): error TS2322: Ty !!! error TS2322: Type 'StringIterator' is not assignable to type 'Iterator'. !!! error TS2322: Types of property 'return' are incompatible. !!! error TS2322: Type 'number' is not assignable to type '(value?: any) => IteratorResult'. -!!! error TS2322: Type 'Number' provides no match for the signature '(value?: any): IteratorResult' class StringIterator { next() { diff --git a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt index 18febd754a4..87ae6b63855 100644 --- a/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt +++ b/tests/baselines/reference/genericCallWithGenericSignatureArguments3.errors.txt @@ -3,7 +3,6 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen Type 'boolean' is not assignable to type 'string'. tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts(33,11): error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. - Type 'Number' provides no match for the signature '(n: Object): number' ==== tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGenericSignatureArguments3.ts (2 errors) ==== @@ -46,5 +45,4 @@ tests/cases/conformance/types/typeRelationships/typeInference/genericCallWithGen var r12 = foo2(x, (a1: (y: string) => boolean) => (n: Object) => 1, (a2: (z: string) => boolean) => 2); // error ~~~~ !!! error TS2453: The type argument for type parameter 'U' cannot be inferred from the usage. Consider specifying the type arguments explicitly. -!!! error TS2453: Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. -!!! error TS2453: Type 'Number' provides no match for the signature '(n: Object): number' \ No newline at end of file +!!! error TS2453: Type argument candidate '(n: Object) => number' is not a valid type argument because it is not a supertype of candidate 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/incompatibleTypes.errors.txt b/tests/baselines/reference/incompatibleTypes.errors.txt index 131beacbeae..e612600a7f8 100644 --- a/tests/baselines/reference/incompatibleTypes.errors.txt +++ b/tests/baselines/reference/incompatibleTypes.errors.txt @@ -23,7 +23,6 @@ tests/cases/compiler/incompatibleTypes.ts(49,7): error TS2345: Argument of type tests/cases/compiler/incompatibleTypes.ts(66,47): error TS2322: Type '{ e: number; f: number; }' is not assignable to type '{ a: { a: string; }; b: string; }'. Object literal may only specify known properties, and 'e' does not exist in type '{ a: { a: string; }; b: string; }'. tests/cases/compiler/incompatibleTypes.ts(72,5): error TS2322: Type 'number' is not assignable to type '() => string'. - Type 'Number' provides no match for the signature '(): string' tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => number' is not assignable to type '() => any'. @@ -133,7 +132,6 @@ tests/cases/compiler/incompatibleTypes.ts(74,5): error TS2322: Type '(a: any) => var i1c1: { (): string; } = 5; ~~~~ !!! error TS2322: Type 'number' is not assignable to type '() => string'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): string' var fp1: () =>any = a => 0; ~~~ diff --git a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt index afa0f8e73b4..6fde83e08b0 100644 --- a/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceMemberAccessorOverridingMethod.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(7,7): error TS2415: Class 'b' incorrectly extends base class 'a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Type 'String' provides no match for the signature '(): string' tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(8,9): error TS2423: Class 'a' defines instance member function 'x', but extended class 'b' defines it as instance member accessor. tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -19,7 +18,6 @@ tests/cases/compiler/inheritanceMemberAccessorOverridingMethod.ts(11,9): error T !!! error TS2415: Class 'b' incorrectly extends base class 'a'. !!! error TS2415: Types of property 'x' are incompatible. !!! error TS2415: Type 'string' is not assignable to type '() => string'. -!!! error TS2415: Type 'String' provides no match for the signature '(): string' get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt index ac3ea03cbb8..38b1ed61fac 100644 --- a/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticAccessorOverridingMethod.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Type 'String' provides no match for the signature '(): string' tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(8,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. @@ -18,7 +17,6 @@ tests/cases/compiler/inheritanceStaticAccessorOverridingMethod.ts(11,16): error !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. -!!! error TS2417: Type 'String' provides no match for the signature '(): string' static get x() { ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. diff --git a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt index 70bed434978..22748fda783 100644 --- a/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt +++ b/tests/baselines/reference/inheritanceStaticPropertyOverridingMethod.errors.txt @@ -1,7 +1,6 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. Types of property 'x' are incompatible. Type 'string' is not assignable to type '() => string'. - Type 'String' provides no match for the signature '(): string' ==== tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts (1 errors) ==== @@ -16,6 +15,5 @@ tests/cases/compiler/inheritanceStaticPropertyOverridingMethod.ts(7,7): error TS !!! error TS2417: Class static side 'typeof b' incorrectly extends base class static side 'typeof a'. !!! error TS2417: Types of property 'x' are incompatible. !!! error TS2417: Type 'string' is not assignable to type '() => string'. -!!! error TS2417: Type 'String' provides no match for the signature '(): string' static x: string; } \ No newline at end of file diff --git a/tests/baselines/reference/intTypeCheck.errors.txt b/tests/baselines/reference/intTypeCheck.errors.txt index b6f8afa3030..3d805a65822 100644 --- a/tests/baselines/reference/intTypeCheck.errors.txt +++ b/tests/baselines/reference/intTypeCheck.errors.txt @@ -21,7 +21,6 @@ tests/cases/compiler/intTypeCheck.ts(114,17): error TS2350: Only a void function tests/cases/compiler/intTypeCheck.ts(115,5): error TS2322: Type 'Base' is not assignable to type 'i2'. Type 'Base' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(120,5): error TS2322: Type 'boolean' is not assignable to type 'i2'. - Type 'Boolean' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(120,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(120,22): error TS2304: Cannot find name 'i2'. tests/cases/compiler/intTypeCheck.ts(121,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -34,7 +33,6 @@ tests/cases/compiler/intTypeCheck.ts(129,5): error TS2322: Type 'Base' is not as tests/cases/compiler/intTypeCheck.ts(131,5): error TS2322: Type '() => void' is not assignable to type 'i3'. Type '() => void' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(134,5): error TS2322: Type 'boolean' is not assignable to type 'i3'. - Type 'Boolean' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(134,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(134,22): error TS2304: Cannot find name 'i3'. tests/cases/compiler/intTypeCheck.ts(135,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -68,7 +66,6 @@ tests/cases/compiler/intTypeCheck.ts(171,5): error TS2322: Type 'Base' is not as tests/cases/compiler/intTypeCheck.ts(173,5): error TS2322: Type '() => void' is not assignable to type 'i6'. Type 'void' is not assignable to type 'number'. tests/cases/compiler/intTypeCheck.ts(176,5): error TS2322: Type 'boolean' is not assignable to type 'i6'. - Type 'Boolean' provides no match for the signature '(): any' tests/cases/compiler/intTypeCheck.ts(176,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(176,22): error TS2304: Cannot find name 'i6'. tests/cases/compiler/intTypeCheck.ts(177,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -81,7 +78,6 @@ tests/cases/compiler/intTypeCheck.ts(185,17): error TS2352: Neither type 'Base' tests/cases/compiler/intTypeCheck.ts(187,5): error TS2322: Type '() => void' is not assignable to type 'i7'. Type '() => void' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(190,5): error TS2322: Type 'boolean' is not assignable to type 'i7'. - Type 'Boolean' provides no match for the signature 'new (): any' tests/cases/compiler/intTypeCheck.ts(190,21): error TS1109: Expression expected. tests/cases/compiler/intTypeCheck.ts(190,22): error TS2304: Cannot find name 'i7'. tests/cases/compiler/intTypeCheck.ts(191,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature. @@ -253,7 +249,6 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj20: i2 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i2'. -!!! error TS2322: Type 'Boolean' provides no match for the signature '(): any' ~ !!! error TS1109: Expression expected. ~~ @@ -288,7 +283,6 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj31: i3 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i3'. -!!! error TS2322: Type 'Boolean' provides no match for the signature 'new (): any' ~ !!! error TS1109: Expression expected. ~~ @@ -387,7 +381,6 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj64: i6 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i6'. -!!! error TS2322: Type 'Boolean' provides no match for the signature '(): any' ~ !!! error TS1109: Expression expected. ~~ @@ -422,7 +415,6 @@ tests/cases/compiler/intTypeCheck.ts(205,17): error TS2351: Cannot use 'new' wit var obj75: i7 = new anyVar; ~~~~~ !!! error TS2322: Type 'boolean' is not assignable to type 'i7'. -!!! error TS2322: Type 'Boolean' provides no match for the signature 'new (): any' ~ !!! error TS1109: Expression expected. ~~ diff --git a/tests/baselines/reference/invalidBooleanAssignments.errors.txt b/tests/baselines/reference/invalidBooleanAssignments.errors.txt index 85184de6607..84ced226113 100644 --- a/tests/baselines/reference/invalidBooleanAssignments.errors.txt +++ b/tests/baselines/reference/invalidBooleanAssignments.errors.txt @@ -7,7 +7,6 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(12 tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(15,5): error TS2322: Type 'boolean' is not assignable to type 'I'. Property 'bar' is missing in type 'Boolean'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(17,5): error TS2322: Type 'boolean' is not assignable to type '() => string'. - Type 'Boolean' provides no match for the signature '(): string' tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(21,1): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(24,5): error TS2322: Type 'boolean' is not assignable to type 'T'. tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26,1): error TS2364: Invalid left-hand side of assignment expression. @@ -47,7 +46,6 @@ tests/cases/conformance/types/primitives/boolean/invalidBooleanAssignments.ts(26 var h: { (): string } = x; ~ !!! error TS2322: Type 'boolean' is not assignable to type '() => string'. -!!! error TS2322: Type 'Boolean' provides no match for the signature '(): string' var h2: { toString(): string } = x; // no error module M { export var a = 1; } diff --git a/tests/baselines/reference/recursiveFunctionTypes.errors.txt b/tests/baselines/reference/recursiveFunctionTypes.errors.txt index 53993a06c60..8d5303c0669 100644 --- a/tests/baselines/reference/recursiveFunctionTypes.errors.txt +++ b/tests/baselines/reference/recursiveFunctionTypes.errors.txt @@ -1,5 +1,4 @@ tests/cases/compiler/recursiveFunctionTypes.ts(1,35): error TS2322: Type 'number' is not assignable to type '() => typeof fn'. - Type 'Number' provides no match for the signature '(): () => typeof fn' tests/cases/compiler/recursiveFunctionTypes.ts(3,5): error TS2322: Type '() => typeof fn' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(4,5): error TS2322: Type '() => typeof fn' is not assignable to type '() => number'. Type '() => typeof fn' is not assignable to type 'number'. @@ -7,23 +6,18 @@ tests/cases/compiler/recursiveFunctionTypes.ts(11,16): error TS2355: A function tests/cases/compiler/recursiveFunctionTypes.ts(12,16): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value. tests/cases/compiler/recursiveFunctionTypes.ts(17,5): error TS2322: Type '() => I' is not assignable to type 'number'. tests/cases/compiler/recursiveFunctionTypes.ts(22,5): error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. - Type 'Number' provides no match for the signature '(t: (t: typeof g) => void): void' tests/cases/compiler/recursiveFunctionTypes.ts(25,1): error TS2322: Type 'number' is not assignable to type '() => any'. - Type 'Number' provides no match for the signature '(): () => any' tests/cases/compiler/recursiveFunctionTypes.ts(30,10): error TS2394: Overload signature is not compatible with function implementation. tests/cases/compiler/recursiveFunctionTypes.ts(33,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(34,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. - Type 'String' provides no match for the signature '(): { (): typeof f6; (a: typeof f6): () => number; }' tests/cases/compiler/recursiveFunctionTypes.ts(42,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. - Type 'String' provides no match for the signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' ==== tests/cases/compiler/recursiveFunctionTypes.ts (13 errors) ==== function fn(): typeof fn { return 1; } ~ !!! error TS2322: Type 'number' is not assignable to type '() => typeof fn'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): () => typeof fn' var x: number = fn; // error ~ @@ -58,13 +52,11 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of C.g(3); // error ~ !!! error TS2345: Argument of type 'number' is not assignable to parameter of type '(t: typeof g) => void'. -!!! error TS2345: Type 'Number' provides no match for the signature '(t: (t: typeof g) => void): void' var f4: () => typeof f4; f4 = 3; // error ~~ !!! error TS2322: Type 'number' is not assignable to type '() => any'. -!!! error TS2322: Type 'Number' provides no match for the signature '(): () => any' function f5() { return f5; } @@ -80,7 +72,6 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f6(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f6; (a: typeof f6): () => number; }'. -!!! error TS2345: Type 'String' provides no match for the signature '(): { (): typeof f6; (a: typeof f6): () => number; }' f6(); // ok declare function f7(): typeof f7; @@ -94,5 +85,4 @@ tests/cases/compiler/recursiveFunctionTypes.ts(43,4): error TS2345: Argument of f7(""); // ok (function takes an any param) ~~ !!! error TS2345: Argument of type 'string' is not assignable to parameter of type '{ (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }'. -!!! error TS2345: Type 'String' provides no match for the signature '(): { (): typeof f7; (a: typeof f7): () => number; (a: number): number; (a?: typeof f7): typeof f7; }' f7(); // ok \ No newline at end of file diff --git a/tests/baselines/reference/typeName1.errors.txt b/tests/baselines/reference/typeName1.errors.txt index a55754221ce..84c8be360bd 100644 --- a/tests/baselines/reference/typeName1.errors.txt +++ b/tests/baselines/reference/typeName1.errors.txt @@ -3,7 +3,6 @@ tests/cases/compiler/typeName1.ts(9,5): error TS2322: Type 'number' is not assig tests/cases/compiler/typeName1.ts(10,5): error TS2322: Type 'number' is not assignable to type '{ f(s: string): number; }'. Property 'f' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(11,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. - Type 'Number' provides no match for the signature '(s: string): number' tests/cases/compiler/typeName1.ts(12,5): error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. Property 'x' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -11,7 +10,6 @@ tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assi tests/cases/compiler/typeName1.ts(14,5): error TS2322: Type 'number' is not assignable to type '{ z: number; f: { (n: number): string; (s: string): number; }; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(15,5): error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. - Type 'Number' provides no match for the signature '(s: string): boolean' tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. @@ -51,7 +49,6 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x3:{ (s:string):number;(n:number):string; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (s: string): number; (n: number): string; }'. -!!! error TS2322: Type 'Number' provides no match for the signature '(s: string): number' var x4:{ x;y;z:number;f(n:number):string;f(s:string):number; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ x: any; y: any; z: number; f(n: number): string; f(s: string): number; }'. @@ -67,7 +64,6 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as var x7:(s:string)=>boolean=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. -!!! error TS2322: Type 'Number' provides no match for the signature '(s: string): boolean' var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; ~~ !!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. From 4338dcb308a16c3444f7f2604910b12f87a77603 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Wed, 2 Dec 2015 15:26:10 -0800 Subject: [PATCH 077/265] Add comment for use of isPrimitiveApparentType --- src/compiler/checker.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 577e546868f..91f148987ef 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5460,6 +5460,8 @@ namespace ts { shouldElaborateErrors = false; } } + // don't elaborate the primitive apparent types (like Number) + // because the actual primitives will have already been reported. if (shouldElaborateErrors && !isPrimitiveApparentType(source)) { reportError(Diagnostics.Type_0_provides_no_match_for_the_signature_1, typeToString(source), From 3e6d40f3fee5a47fe3b1aa39ae3322db1d3e63ed Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 2 Dec 2015 15:41:37 -0800 Subject: [PATCH 078/265] Removing comment from test --- .../reference/unionTypeParameterInference.js | 7 +++- .../unionTypeParameterInference.symbols | 42 ++++++++++--------- .../unionTypeParameterInference.types | 4 +- .../compiler/unionTypeParameterInference.ts | 4 +- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/tests/baselines/reference/unionTypeParameterInference.js b/tests/baselines/reference/unionTypeParameterInference.js index cc797c511c8..c96e809cd4d 100644 --- a/tests/baselines/reference/unionTypeParameterInference.js +++ b/tests/baselines/reference/unionTypeParameterInference.js @@ -1,14 +1,17 @@ //// [unionTypeParameterInference.ts] +// Regression test for #5861 + interface Foo { prop: T; } declare function lift(value: U | Foo): Foo; function unlift(value: U | Foo): U { - return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. + return lift(value).prop; } //// [unionTypeParameterInference.js] +// Regression test for #5861 function unlift(value) { - return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. + return lift(value).prop; } diff --git a/tests/baselines/reference/unionTypeParameterInference.symbols b/tests/baselines/reference/unionTypeParameterInference.symbols index ee540379284..f2dbaac31ff 100644 --- a/tests/baselines/reference/unionTypeParameterInference.symbols +++ b/tests/baselines/reference/unionTypeParameterInference.symbols @@ -1,33 +1,35 @@ === tests/cases/compiler/unionTypeParameterInference.ts === +// Regression test for #5861 + interface Foo { prop: T; } >Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) ->T : Symbol(T, Decl(unionTypeParameterInference.ts, 0, 14)) ->prop : Symbol(prop, Decl(unionTypeParameterInference.ts, 0, 18)) ->T : Symbol(T, Decl(unionTypeParameterInference.ts, 0, 14)) +>T : Symbol(T, Decl(unionTypeParameterInference.ts, 2, 14)) +>prop : Symbol(prop, Decl(unionTypeParameterInference.ts, 2, 18)) +>T : Symbol(T, Decl(unionTypeParameterInference.ts, 2, 14)) declare function lift(value: U | Foo): Foo; ->lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 0, 29)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) ->value : Symbol(value, Decl(unionTypeParameterInference.ts, 2, 25)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 2, 29)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 22)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 4, 25)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 22)) >Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 22)) >Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 2, 22)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 22)) function unlift(value: U | Foo): U { ->unlift : Symbol(unlift, Decl(unionTypeParameterInference.ts, 2, 52)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) ->value : Symbol(value, Decl(unionTypeParameterInference.ts, 4, 19)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) +>unlift : Symbol(unlift, Decl(unionTypeParameterInference.ts, 4, 52)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 6, 16)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 6, 19)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 6, 16)) >Foo : Symbol(Foo, Decl(unionTypeParameterInference.ts, 0, 0)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) ->U : Symbol(U, Decl(unionTypeParameterInference.ts, 4, 16)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 6, 16)) +>U : Symbol(U, Decl(unionTypeParameterInference.ts, 6, 16)) - return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. ->lift(value).prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 0, 18)) ->lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 0, 29)) ->value : Symbol(value, Decl(unionTypeParameterInference.ts, 4, 19)) ->prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 0, 18)) + return lift(value).prop; +>lift(value).prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 2, 18)) +>lift : Symbol(lift, Decl(unionTypeParameterInference.ts, 2, 29)) +>value : Symbol(value, Decl(unionTypeParameterInference.ts, 6, 19)) +>prop : Symbol(Foo.prop, Decl(unionTypeParameterInference.ts, 2, 18)) } diff --git a/tests/baselines/reference/unionTypeParameterInference.types b/tests/baselines/reference/unionTypeParameterInference.types index a4b6a09cf2c..54eaed90ecc 100644 --- a/tests/baselines/reference/unionTypeParameterInference.types +++ b/tests/baselines/reference/unionTypeParameterInference.types @@ -1,4 +1,6 @@ === tests/cases/compiler/unionTypeParameterInference.ts === +// Regression test for #5861 + interface Foo { prop: T; } >Foo : Foo >T : T @@ -24,7 +26,7 @@ function unlift(value: U | Foo): U { >U : U >U : U - return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. + return lift(value).prop; >lift(value).prop : U >lift(value) : Foo >lift : (value: U | Foo) => Foo diff --git a/tests/cases/compiler/unionTypeParameterInference.ts b/tests/cases/compiler/unionTypeParameterInference.ts index 221b0891b98..79c4f3cc0e5 100644 --- a/tests/cases/compiler/unionTypeParameterInference.ts +++ b/tests/cases/compiler/unionTypeParameterInference.ts @@ -1,7 +1,9 @@ +// Regression test for #5861 + interface Foo { prop: T; } declare function lift(value: U | Foo): Foo; function unlift(value: U | Foo): U { - return lift(value).prop; // error TS2322: Type '{}' is not assignable to type 'U'. + return lift(value).prop; } From 86d4a4c11f2abfd7d20fb3cd69e2e41051c5479b Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 2 Dec 2015 15:42:25 -0800 Subject: [PATCH 079/265] Adding test to demonstrate limits of signature identity checking --- .../reference/genericSignatureIdentity.js | 32 ++++++++++++ .../genericSignatureIdentity.symbols | 49 +++++++++++++++++++ .../reference/genericSignatureIdentity.types | 49 +++++++++++++++++++ .../compiler/genericSignatureIdentity.ts | 20 ++++++++ 4 files changed, 150 insertions(+) create mode 100644 tests/baselines/reference/genericSignatureIdentity.js create mode 100644 tests/baselines/reference/genericSignatureIdentity.symbols create mode 100644 tests/baselines/reference/genericSignatureIdentity.types create mode 100644 tests/cases/compiler/genericSignatureIdentity.ts diff --git a/tests/baselines/reference/genericSignatureIdentity.js b/tests/baselines/reference/genericSignatureIdentity.js new file mode 100644 index 00000000000..9a51a61edbd --- /dev/null +++ b/tests/baselines/reference/genericSignatureIdentity.js @@ -0,0 +1,32 @@ +//// [genericSignatureIdentity.ts] +// This test is here to remind us of our current limits of type identity checking. +// Ideally all of the below declarations would be considered different (and thus errors) +// but they aren't because we erase type parameters to type any and don't check that +// constraints are identical. + +var x: { + (x: T): T; +}; + +var x: { + (x: T): T; +}; + +var x: { + (x: T): T; +}; + +var x: { + (x: any): any; +}; + + +//// [genericSignatureIdentity.js] +// This test is here to remind us of our current limits of type identity checking. +// Ideally all of the below declarations would be considered different (and thus errors) +// but they aren't because we erase type parameters to type any and don't check that +// constraints are identical. +var x; +var x; +var x; +var x; diff --git a/tests/baselines/reference/genericSignatureIdentity.symbols b/tests/baselines/reference/genericSignatureIdentity.symbols new file mode 100644 index 00000000000..afd12ec266a --- /dev/null +++ b/tests/baselines/reference/genericSignatureIdentity.symbols @@ -0,0 +1,49 @@ +=== tests/cases/compiler/genericSignatureIdentity.ts === +// This test is here to remind us of our current limits of type identity checking. +// Ideally all of the below declarations would be considered different (and thus errors) +// but they aren't because we erase type parameters to type any and don't check that +// constraints are identical. + +var x: { +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3)) + + (x: T): T; +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) +>Date : Symbol(Date, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --)) +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 6, 21)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 6, 5)) + +}; + +var x: { +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3)) + + (x: T): T; +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5)) +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 10, 23)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 10, 5)) + +}; + +var x: { +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3)) + + (x: T): T; +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5)) +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 14, 8)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5)) +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 14, 5)) + +}; + +var x: { +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 5, 3), Decl(genericSignatureIdentity.ts, 9, 3), Decl(genericSignatureIdentity.ts, 13, 3), Decl(genericSignatureIdentity.ts, 17, 3)) + + (x: any): any; +>T : Symbol(T, Decl(genericSignatureIdentity.ts, 18, 5)) +>x : Symbol(x, Decl(genericSignatureIdentity.ts, 18, 8)) + +}; + diff --git a/tests/baselines/reference/genericSignatureIdentity.types b/tests/baselines/reference/genericSignatureIdentity.types new file mode 100644 index 00000000000..9385718a361 --- /dev/null +++ b/tests/baselines/reference/genericSignatureIdentity.types @@ -0,0 +1,49 @@ +=== tests/cases/compiler/genericSignatureIdentity.ts === +// This test is here to remind us of our current limits of type identity checking. +// Ideally all of the below declarations would be considered different (and thus errors) +// but they aren't because we erase type parameters to type any and don't check that +// constraints are identical. + +var x: { +>x : (x: T) => T + + (x: T): T; +>T : T +>Date : Date +>x : T +>T : T +>T : T + +}; + +var x: { +>x : (x: T) => T + + (x: T): T; +>T : T +>x : T +>T : T +>T : T + +}; + +var x: { +>x : (x: T) => T + + (x: T): T; +>T : T +>x : T +>T : T +>T : T + +}; + +var x: { +>x : (x: T) => T + + (x: any): any; +>T : T +>x : any + +}; + diff --git a/tests/cases/compiler/genericSignatureIdentity.ts b/tests/cases/compiler/genericSignatureIdentity.ts new file mode 100644 index 00000000000..c685b8cc573 --- /dev/null +++ b/tests/cases/compiler/genericSignatureIdentity.ts @@ -0,0 +1,20 @@ +// This test is here to remind us of our current limits of type identity checking. +// Ideally all of the below declarations would be considered different (and thus errors) +// but they aren't because we erase type parameters to type any and don't check that +// constraints are identical. + +var x: { + (x: T): T; +}; + +var x: { + (x: T): T; +}; + +var x: { + (x: T): T; +}; + +var x: { + (x: any): any; +}; From c4cff9833df7a90868473d1461a38dbc7be49896 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Dec 2015 18:35:49 -0800 Subject: [PATCH 080/265] first pass at this type predicates --- src/compiler/checker.ts | 275 +++++++++++++++++---------- src/compiler/diagnosticMessages.json | 4 + src/compiler/parser.ts | 29 ++- src/compiler/types.ts | 28 ++- src/compiler/utilities.ts | 4 + 5 files changed, 228 insertions(+), 112 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e737cd58bd5..a5a904ab3a9 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2058,7 +2058,12 @@ namespace ts { let returnType: Type; if (signature.typePredicate) { - writer.writeParameter(signature.typePredicate.parameterName); + if (signature.typePredicate.kind === TypePredicateKind.Identifier) { + writer.writeParameter((signature.typePredicate as IdentifierTypePredicate).parameterName); + } + else { + writeKeyword(writer, SyntaxKind.ThisKeyword); + } writeSpace(writer); writeKeyword(writer, SyntaxKind.IsKeyword); writeSpace(writer); @@ -3356,7 +3361,7 @@ namespace ts { } function createSignature(declaration: SignatureDeclaration, typeParameters: TypeParameter[], parameters: Symbol[], - resolvedReturnType: Type, typePredicate: TypePredicate, minArgumentCount: number, hasRestParameter: boolean, hasStringLiterals: boolean): Signature { + resolvedReturnType: Type, typePredicate: IdentifierTypePredicate | ThisTypePredicate, minArgumentCount: number, hasRestParameter: boolean, hasStringLiterals: boolean): Signature { const sig = new Signature(checker); sig.declaration = declaration; sig.typeParameters = typeParameters; @@ -3884,19 +3889,29 @@ namespace ts { } let returnType: Type; - let typePredicate: TypePredicate; + let typePredicate: IdentifierTypePredicate | ThisTypePredicate; if (classType) { returnType = classType; } else if (declaration.type) { returnType = getTypeFromTypeNode(declaration.type); if (declaration.type.kind === SyntaxKind.TypePredicate) { - const typePredicateNode = declaration.type; - typePredicate = { - parameterName: typePredicateNode.parameterName ? typePredicateNode.parameterName.text : undefined, - parameterIndex: typePredicateNode.parameterName ? getTypePredicateParameterIndex(declaration.parameters, typePredicateNode.parameterName) : undefined, - type: getTypeFromTypeNode(typePredicateNode.type) - }; + const typePredicateNode = declaration.type as TypePredicateNode; + if (typePredicateNode.parameterName.kind === SyntaxKind.Identifier) { + const parameterName = typePredicateNode.parameterName as Identifier; + typePredicate = { + kind: TypePredicateKind.Identifier, + parameterName: parameterName ? parameterName.text : undefined, + parameterIndex: parameterName ? getTypePredicateParameterIndex(declaration.parameters, parameterName) : undefined, + type: getTypeFromTypeNode(typePredicateNode.type) + }; + } + else { + typePredicate = { + kind: TypePredicateKind.This, + type: getTypeFromTypeNode(typePredicateNode.type) + } as ThisTypePredicate; + } } } else { @@ -4716,19 +4731,33 @@ namespace ts { return result; } + function cloneTypePredicate(predicate: TypePredicate, mapper: TypeMapper): ThisTypePredicate | IdentifierTypePredicate { + if (predicate.kind === TypePredicateKind.Identifier) { + const identifierPredicate = predicate as IdentifierTypePredicate; + return { + kind: TypePredicateKind.Identifier, + parameterName: identifierPredicate.parameterName, + parameterIndex: identifierPredicate.parameterIndex, + type: instantiateType(predicate.type, mapper) + } as IdentifierTypePredicate; + } + else { + return { + kind: TypePredicateKind.This, + type: instantiateType(predicate.type, mapper) + } as ThisTypePredicate; + } + } + function instantiateSignature(signature: Signature, mapper: TypeMapper, eraseTypeParameters?: boolean): Signature { let freshTypeParameters: TypeParameter[]; - let freshTypePredicate: TypePredicate; + let freshTypePredicate: ThisTypePredicate | IdentifierTypePredicate; if (signature.typeParameters && !eraseTypeParameters) { freshTypeParameters = instantiateList(signature.typeParameters, mapper, instantiateTypeParameter); mapper = combineTypeMappers(createTypeMapper(signature.typeParameters, freshTypeParameters), mapper); } if (signature.typePredicate) { - freshTypePredicate = { - parameterName: signature.typePredicate.parameterName, - parameterIndex: signature.typePredicate.parameterIndex, - type: instantiateType(signature.typePredicate.type, mapper) - }; + freshTypePredicate = cloneTypePredicate(signature.typePredicate, mapper); } const result = createSignature(signature.declaration, freshTypeParameters, instantiateList(signature.parameters, mapper, instantiateSymbol), @@ -5548,33 +5577,55 @@ namespace ts { } if (source.typePredicate && target.typePredicate) { - const hasDifferentParameterIndex = source.typePredicate.parameterIndex !== target.typePredicate.parameterIndex; - let hasDifferentTypes: boolean; - if (hasDifferentParameterIndex || - (hasDifferentTypes = !isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type))) { - + if (source.typePredicate.kind !== target.typePredicate.kind) { if (reportErrors) { - const sourceParamText = source.typePredicate.parameterName; - const targetParamText = target.typePredicate.parameterName; - const sourceTypeText = typeToString(source.typePredicate.type); - const targetTypeText = typeToString(target.typePredicate.type); - - if (hasDifferentParameterIndex) { - reportError(Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, - sourceParamText, - targetParamText); - } - else if (hasDifferentTypes) { + reportError(Diagnostics.A_this_based_type_guard_is_not_assignable_to_a_parameter_based_type_guard); + } + return Ternary.False; + } + if (source.typePredicate.kind === TypePredicateKind.This) { + if (!isTypeIdenticalTo(source.typePredicate.type, target.typePredicate.type)) { + if (reportErrors) { + const sourceTypeText = typeToString(source.typePredicate.type); + const targetTypeText = typeToString(target.typePredicate.type); reportError(Diagnostics.Type_0_is_not_assignable_to_type_1, sourceTypeText, targetTypeText); } + return Ternary.False; + } + } + else { + const sourcePredicate = source.typePredicate as IdentifierTypePredicate; + const targetPredicate = target.typePredicate as IdentifierTypePredicate; + const hasDifferentParameterIndex = sourcePredicate.parameterIndex !== targetPredicate.parameterIndex; + let hasDifferentTypes: boolean; + if (hasDifferentParameterIndex || + (hasDifferentTypes = !isTypeIdenticalTo(sourcePredicate.type, targetPredicate.type))) { - reportError(Diagnostics.Type_predicate_0_is_not_assignable_to_1, - `${sourceParamText} is ${sourceTypeText}`, - `${targetParamText} is ${targetTypeText}`); + if (reportErrors) { + const sourceParamText = sourcePredicate.parameterName; + const targetParamText = targetPredicate.parameterName; + const sourceTypeText = typeToString(sourcePredicate.type); + const targetTypeText = typeToString(targetPredicate.type); + + if (hasDifferentParameterIndex) { + reportError(Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1, + sourceParamText, + targetParamText); + } + else if (hasDifferentTypes) { + reportError(Diagnostics.Type_0_is_not_assignable_to_type_1, + sourceTypeText, + targetTypeText); + } + + reportError(Diagnostics.Type_predicate_0_is_not_assignable_to_1, + `${sourceParamText} is ${sourceTypeText}`, + `${targetParamText} is ${targetTypeText}`); + } + return Ternary.False; } - return Ternary.False; } } else if (!source.typePredicate && target.typePredicate) { @@ -6235,11 +6286,15 @@ namespace ts { function inferFromSignature(source: Signature, target: Signature) { forEachMatchingParameterType(source, target, inferFromTypes); if (source.typePredicate && target.typePredicate) { - if (target.typePredicate.parameterIndex === source.typePredicate.parameterIndex) { - // Return types from type predicates are treated as booleans. In order to infer types - // from type predicates we would need to infer using the type within the type predicate - // (i.e. 'Foo' from 'x is Foo'). - inferFromTypes(source.typePredicate.type, target.typePredicate.type); + if (target.typePredicate.kind === source.typePredicate.kind) { + if ((target.typePredicate.kind === TypePredicateKind.Identifier + && (target.typePredicate as IdentifierTypePredicate).parameterIndex === (source.typePredicate as IdentifierTypePredicate).parameterIndex) + || target.typePredicate.kind === TypePredicateKind.This) { + // Return types from type predicates are treated as booleans. In order to infer types + // from type predicates we would need to infer using the type within the type predicate + // (i.e. 'Foo' from 'x is Foo'). + inferFromTypes(source.typePredicate.type, target.typePredicate.type); + } } } else { @@ -6654,20 +6709,20 @@ namespace ts { } if (targetType) { - if (!assumeTrue) { - if (type.flags & TypeFlags.Union) { - return getUnionType(filter((type).types, t => !isTypeSubtypeOf(t, targetType))); - } - return type; - } - - return getNarrowedType(type, targetType); + return getNarrowedType(type, targetType, assumeTrue); } return type; } - function getNarrowedType(originalType: Type, narrowedTypeCandidate: Type) { + function getNarrowedType(originalType: Type, narrowedTypeCandidate: Type, assumeTrue: boolean) { + if (!assumeTrue) { + if (originalType.flags & TypeFlags.Union) { + return getUnionType(filter((originalType).types, t => !isTypeSubtypeOf(t, narrowedTypeCandidate))); + } + return originalType; + } + // If the current type is a union type, remove all constituents that aren't assignable to target. If that produces // 0 candidates, fall back to the assignability check if (originalType.flags & TypeFlags.Union) { @@ -6691,19 +6746,35 @@ namespace ts { } const signature = getResolvedSignature(expr); - if (signature.typePredicate && - expr.arguments[signature.typePredicate.parameterIndex] && - getSymbolAtLocation(expr.arguments[signature.typePredicate.parameterIndex]) === symbol) { + if (!signature.typePredicate) { + return type; + } + const predicate = signature.typePredicate; + if (isIdentifierTypePredicate(predicate)) { + if (expr.arguments[predicate.parameterIndex] && + getSymbolAtLocation(expr.arguments[predicate.parameterIndex]) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); + } + } + else { + const expression = skipParenthesizedNodes(expr.expression); - if (!assumeTrue) { - if (type.flags & TypeFlags.Union) { - return getUnionType(filter((type).types, t => !isTypeSubtypeOf(t, signature.typePredicate.type))); + if (expression.kind === SyntaxKind.ElementAccessExpression || expression.kind === SyntaxKind.PropertyAccessExpression) { + const accessExpression = expression as ElementAccessExpression | PropertyAccessExpression; + const possibleIdentifier = skipParenthesizedNodes(accessExpression.expression); + if (possibleIdentifier.kind === SyntaxKind.Identifier && getSymbolAtLocation(possibleIdentifier) === symbol) { + return getNarrowedType(type, predicate.type, assumeTrue); } - return type; } - return getNarrowedType(type, signature.typePredicate.type); } return type; + + function skipParenthesizedNodes(expression: Expression): Expression { + while (expression.kind === SyntaxKind.ParenthesizedExpression) { + expression = (expression as ParenthesizedExpression).expression; + } + return expression; + } } // Narrow the given type based on the given expression having the assumed boolean value. The returned type @@ -10962,51 +11033,57 @@ namespace ts { const typePredicate = getSignatureFromDeclaration(node).typePredicate; const typePredicateNode = node.type; if (isInLegalTypePredicatePosition(typePredicateNode)) { - if (typePredicate.parameterIndex >= 0) { - if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { - error(typePredicateNode.parameterName, - Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); + if (isIdentifierTypePredicate(typePredicate)) { + if (typePredicate.parameterIndex >= 0) { + if (node.parameters[typePredicate.parameterIndex].dotDotDotToken) { + error(typePredicateNode.parameterName, + Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter); + } + else { + checkTypeAssignableTo(typePredicate.type, + getTypeOfNode(node.parameters[typePredicate.parameterIndex]), + typePredicateNode.type); + } } - else { - checkTypeAssignableTo(typePredicate.type, - getTypeOfNode(node.parameters[typePredicate.parameterIndex]), - typePredicateNode.type); + else if (typePredicateNode.parameterName) { + let hasReportedError = false; + for (var param of node.parameters) { + if (hasReportedError) { + break; + } + if (param.name.kind === SyntaxKind.ObjectBindingPattern || + param.name.kind === SyntaxKind.ArrayBindingPattern) { + + (function checkBindingPattern(pattern: BindingPattern) { + for (const element of pattern.elements) { + if (element.name.kind === SyntaxKind.Identifier && + (element.name).text === typePredicate.parameterName) { + + error(typePredicateNode.parameterName, + Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, + typePredicate.parameterName); + hasReportedError = true; + break; + } + else if (element.name.kind === SyntaxKind.ArrayBindingPattern || + element.name.kind === SyntaxKind.ObjectBindingPattern) { + + checkBindingPattern(element.name); + } + } + })(param.name); + } + } + if (!hasReportedError) { + error(typePredicateNode.parameterName, + Diagnostics.Cannot_find_parameter_0, + typePredicate.parameterName); + } } } - else if (typePredicateNode.parameterName) { - let hasReportedError = false; - for (var param of node.parameters) { - if (hasReportedError) { - break; - } - if (param.name.kind === SyntaxKind.ObjectBindingPattern || - param.name.kind === SyntaxKind.ArrayBindingPattern) { - - (function checkBindingPattern(pattern: BindingPattern) { - for (const element of pattern.elements) { - if (element.name.kind === SyntaxKind.Identifier && - (element.name).text === typePredicate.parameterName) { - - error(typePredicateNode.parameterName, - Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern, - typePredicate.parameterName); - hasReportedError = true; - break; - } - else if (element.name.kind === SyntaxKind.ArrayBindingPattern || - element.name.kind === SyntaxKind.ObjectBindingPattern) { - - checkBindingPattern(element.name); - } - } - })(param.name); - } - } - if (!hasReportedError) { - error(typePredicateNode.parameterName, - Diagnostics.Cannot_find_parameter_0, - typePredicate.parameterName); - } + else { + // Reuse this type diagnostics on the this type node to determine if a this type predicate is valid + getTypeFromThisTypeNode(typePredicateNode.parameterName as ThisTypeNode); } } else { diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0c19f6d8247..f48a37968ca 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1632,6 +1632,10 @@ "category": "Error", "code": 2517 }, + "A this based type guard is not assignable to a parameter based type guard": { + "category": "Error", + "code": 2518 + }, "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions.": { "category": "Error", "code": 2520 diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 3a3350f2166..8b735ad0aa3 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1959,11 +1959,7 @@ namespace ts { function parseTypeReferenceOrTypePredicate(): TypeReferenceNode | TypePredicateNode { const typeName = parseEntityName(/*allowReservedWords*/ false, Diagnostics.Type_expected); if (typeName.kind === SyntaxKind.Identifier && token === SyntaxKind.IsKeyword && !scanner.hasPrecedingLineBreak()) { - nextToken(); - const node = createNode(SyntaxKind.TypePredicate, typeName.pos); - node.parameterName = typeName; - node.type = parseType(); - return finishNode(node); + return parseTypePredicate(typeName as Identifier); } const node = createNode(SyntaxKind.TypeReference, typeName.pos); node.typeName = typeName; @@ -1973,8 +1969,16 @@ namespace ts { return finishNode(node); } - function parseThisTypeNode(): TypeNode { - const node = createNode(SyntaxKind.ThisType); + function parseTypePredicate(lhs: Identifier | ThisTypeNode): TypePredicateNode { + nextToken(); + const node = createNode(SyntaxKind.TypePredicate, lhs.pos) as TypePredicateNode; + node.parameterName = lhs; + node.type = parseType(); + return finishNode(node); + } + + function parseThisTypeNode(): ThisTypeNode { + const node = createNode(SyntaxKind.ThisType) as ThisTypeNode; nextToken(); return finishNode(node); } @@ -2420,8 +2424,15 @@ namespace ts { return parseStringLiteralTypeNode(); case SyntaxKind.VoidKeyword: return parseTokenNode(); - case SyntaxKind.ThisKeyword: - return parseThisTypeNode(); + case SyntaxKind.ThisKeyword: { + const thisKeyword = parseThisTypeNode(); + if (token === SyntaxKind.IsKeyword && !scanner.hasPrecedingLineBreak()) { + return parseTypePredicate(thisKeyword); + } + else { + return thisKeyword; + } + } case SyntaxKind.TypeOfKeyword: return parseTypeQuery(); case SyntaxKind.OpenBraceToken: diff --git a/src/compiler/types.ts b/src/compiler/types.ts index dbd0322aa18..a55373224b9 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -733,11 +733,15 @@ namespace ts { // @kind(SyntaxKind.StringKeyword) // @kind(SyntaxKind.SymbolKeyword) // @kind(SyntaxKind.VoidKeyword) - // @kind(SyntaxKind.ThisType) export interface TypeNode extends Node { _typeNodeBrand: any; } + // @kind(SyntaxKind.ThisType) + export interface ThisTypeNode extends TypeNode { + _thisTypeNodeBrand: any; + } + export interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration { _functionOrConstructorTypeNodeBrand: any; } @@ -756,7 +760,7 @@ namespace ts { // @kind(SyntaxKind.TypePredicate) export interface TypePredicateNode extends TypeNode { - parameterName: Identifier; + parameterName: Identifier | ThisTypeNode; type: TypeNode; } @@ -1820,10 +1824,26 @@ namespace ts { CannotBeNamed } + /* @internal */ + export const enum TypePredicateKind { + This, + Identifier + } + export interface TypePredicate { + kind: TypePredicateKind; + type: Type; + } + + // @kind (TypePredicateKind.This) + export interface ThisTypePredicate extends TypePredicate { + _thisTypePredicateBrand: any; + } + + // @kind (TypePredicateKind.Identifier) + export interface IdentifierTypePredicate extends TypePredicate { parameterName: string; parameterIndex: number; - type: Type; } /* @internal */ @@ -2237,7 +2257,7 @@ namespace ts { declaration: SignatureDeclaration; // Originating declaration typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) parameters: Symbol[]; // Parameters - typePredicate?: TypePredicate; // Type predicate + typePredicate?: ThisTypePredicate | IdentifierTypePredicate; // Type predicate /* @internal */ resolvedReturnType: Type; // Resolved return type /* @internal */ diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 280b8203ff4..5a35bcbdee1 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -692,6 +692,10 @@ namespace ts { return node && node.kind === SyntaxKind.MethodDeclaration && node.parent.kind === SyntaxKind.ObjectLiteralExpression; } + export function isIdentifierTypePredicate(predicate: TypePredicate): predicate is IdentifierTypePredicate { + return predicate.kind === TypePredicateKind.Identifier; + } + export function getContainingFunction(node: Node): FunctionLikeDeclaration { while (true) { node = node.parent; From 859cc53c1105be721e66d4811430604d342931c7 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Dec 2015 19:49:43 -0800 Subject: [PATCH 081/265] Add tests, remove internal annotation form enum --- src/compiler/types.ts | 1 - .../reference/typeGuardFunctionOfFormThis.js | 281 ++++++++++++ .../typeGuardFunctionOfFormThis.symbols | 371 +++++++++++++++ .../typeGuardFunctionOfFormThis.types | 427 ++++++++++++++++++ ...peGuardFunctionOfFormThisErrors.errors.txt | 76 ++++ .../typeGuardFunctionOfFormThisErrors.js | 113 +++++ .../typeGuards/typeGuardFunctionOfFormThis.ts | 134 ++++++ .../typeGuardFunctionOfFormThisErrors.ts | 50 ++ 8 files changed, 1452 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/typeGuardFunctionOfFormThis.js create mode 100644 tests/baselines/reference/typeGuardFunctionOfFormThis.symbols create mode 100644 tests/baselines/reference/typeGuardFunctionOfFormThis.types create mode 100644 tests/baselines/reference/typeGuardFunctionOfFormThisErrors.errors.txt create mode 100644 tests/baselines/reference/typeGuardFunctionOfFormThisErrors.js create mode 100644 tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts create mode 100644 tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts diff --git a/src/compiler/types.ts b/src/compiler/types.ts index a55373224b9..4bde87d0ff5 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1824,7 +1824,6 @@ namespace ts { CannotBeNamed } - /* @internal */ export const enum TypePredicateKind { This, Identifier diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.js b/tests/baselines/reference/typeGuardFunctionOfFormThis.js new file mode 100644 index 00000000000..16ac876be8c --- /dev/null +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.js @@ -0,0 +1,281 @@ +//// [typeGuardFunctionOfFormThis.ts] +class RoyalGuard { + isLeader(): this is LeadGuard { + return this instanceof LeadGuard; + } + isFollower(): this is FollowerGuard { + return this instanceof FollowerGuard; + } +} + +class LeadGuard extends RoyalGuard { + lead(): void {}; +} + +class FollowerGuard extends RoyalGuard { + follow(): void {}; +} + +let a: RoyalGuard = new FollowerGuard(); +if (a.isLeader()) { + a.lead(); +} +else if (a.isFollower()) { + a.follow(); +} + +interface GuardInterface extends RoyalGuard {} + +let b: GuardInterface; +if (b.isLeader()) { + b.lead(); +} +else if (b.isFollower()) { + b.follow(); +} + +if (((a.isLeader)())) { + a.lead(); +} +else if (((a).isFollower())) { + a.follow(); +} + +if (((a["isLeader"])())) { + a.lead(); +} +else if (((a)["isFollower"]())) { + a.follow(); +} + +var holder2 = {a}; + +if (holder2.a.isLeader()) { + holder2.a; +} +else { + holder2.a; +} + +class ArrowGuard { + isElite = (): this is ArrowElite => { + return this instanceof ArrowElite; + } + isMedic = (): this is ArrowMedic => { + return this instanceof ArrowMedic; + } +} + +class ArrowElite extends ArrowGuard { + defend(): void {} +} + +class ArrowMedic extends ArrowGuard { + heal(): void {} +} + +let guard = new ArrowGuard(); +if (guard.isElite()) { + guard.defend(); +} +else if (guard.isMedic()) { + guard.heal(); +} + +interface Supplies { + spoiled: boolean; +} + +interface Sundries { + broken: boolean; +} + +interface Crate { + contents: T; + volume: number; + isSupplies(): this is Crate; + isSundries(): this is Crate; +} + +let crate: Crate<{}>; + +if (crate.isSundries()) { + crate.contents.broken = true; +} +else if (crate.isSupplies()) { + crate.contents.spoiled = true; +} + +// Matching guards should be assignable + +a.isFollower = b.isFollower; +a.isLeader = b.isLeader; + +class MimicGuard { + isLeader(): this is MimicLeader { return this instanceof MimicLeader; }; + isFollower(): this is MimicFollower { return this instanceof MimicFollower; }; +} + +class MimicLeader extends MimicGuard { + lead(): void {} +} + +class MimicFollower extends MimicGuard { + follow(): void {} +} + +let mimic = new MimicGuard(); + +a.isLeader = mimic.isLeader; +a.isFollower = mimic.isFollower; + +if (mimic.isFollower()) { + mimic.follow(); + mimic.isFollower = a.isFollower; +} + +//// [typeGuardFunctionOfFormThis.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var RoyalGuard = (function () { + function RoyalGuard() { + } + RoyalGuard.prototype.isLeader = function () { + return this instanceof LeadGuard; + }; + RoyalGuard.prototype.isFollower = function () { + return this instanceof FollowerGuard; + }; + return RoyalGuard; +})(); +var LeadGuard = (function (_super) { + __extends(LeadGuard, _super); + function LeadGuard() { + _super.apply(this, arguments); + } + LeadGuard.prototype.lead = function () { }; + ; + return LeadGuard; +})(RoyalGuard); +var FollowerGuard = (function (_super) { + __extends(FollowerGuard, _super); + function FollowerGuard() { + _super.apply(this, arguments); + } + FollowerGuard.prototype.follow = function () { }; + ; + return FollowerGuard; +})(RoyalGuard); +var a = new FollowerGuard(); +if (a.isLeader()) { + a.lead(); +} +else if (a.isFollower()) { + a.follow(); +} +var b; +if (b.isLeader()) { + b.lead(); +} +else if (b.isFollower()) { + b.follow(); +} +if (((a.isLeader)())) { + a.lead(); +} +else if (((a).isFollower())) { + a.follow(); +} +if (((a["isLeader"])())) { + a.lead(); +} +else if (((a)["isFollower"]())) { + a.follow(); +} +var holder2 = { a: a }; +if (holder2.a.isLeader()) { + holder2.a; +} +else { + holder2.a; +} +var ArrowGuard = (function () { + function ArrowGuard() { + var _this = this; + this.isElite = function () { + return _this instanceof ArrowElite; + }; + this.isMedic = function () { + return _this instanceof ArrowMedic; + }; + } + return ArrowGuard; +})(); +var ArrowElite = (function (_super) { + __extends(ArrowElite, _super); + function ArrowElite() { + _super.apply(this, arguments); + } + ArrowElite.prototype.defend = function () { }; + return ArrowElite; +})(ArrowGuard); +var ArrowMedic = (function (_super) { + __extends(ArrowMedic, _super); + function ArrowMedic() { + _super.apply(this, arguments); + } + ArrowMedic.prototype.heal = function () { }; + return ArrowMedic; +})(ArrowGuard); +var guard = new ArrowGuard(); +if (guard.isElite()) { + guard.defend(); +} +else if (guard.isMedic()) { + guard.heal(); +} +var crate; +if (crate.isSundries()) { + crate.contents.broken = true; +} +else if (crate.isSupplies()) { + crate.contents.spoiled = true; +} +// Matching guards should be assignable +a.isFollower = b.isFollower; +a.isLeader = b.isLeader; +var MimicGuard = (function () { + function MimicGuard() { + } + MimicGuard.prototype.isLeader = function () { return this instanceof MimicLeader; }; + ; + MimicGuard.prototype.isFollower = function () { return this instanceof MimicFollower; }; + ; + return MimicGuard; +})(); +var MimicLeader = (function (_super) { + __extends(MimicLeader, _super); + function MimicLeader() { + _super.apply(this, arguments); + } + MimicLeader.prototype.lead = function () { }; + return MimicLeader; +})(MimicGuard); +var MimicFollower = (function (_super) { + __extends(MimicFollower, _super); + function MimicFollower() { + _super.apply(this, arguments); + } + MimicFollower.prototype.follow = function () { }; + return MimicFollower; +})(MimicGuard); +var mimic = new MimicGuard(); +a.isLeader = mimic.isLeader; +a.isFollower = mimic.isFollower; +if (mimic.isFollower()) { + mimic.follow(); + mimic.isFollower = a.isFollower; +} diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols b/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols new file mode 100644 index 00000000000..9bda32c4557 --- /dev/null +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.symbols @@ -0,0 +1,371 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts === +class RoyalGuard { +>RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) + + isLeader(): this is LeadGuard { +>isLeader : Symbol(isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) + + return this instanceof LeadGuard; +>this : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) +>LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) + } + isFollower(): this is FollowerGuard { +>isFollower : Symbol(isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) + + return this instanceof FollowerGuard; +>this : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) +>FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) + } +} + +class LeadGuard extends RoyalGuard { +>LeadGuard : Symbol(LeadGuard, Decl(typeGuardFunctionOfFormThis.ts, 7, 1)) +>RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) + + lead(): void {}; +>lead : Symbol(lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +} + +class FollowerGuard extends RoyalGuard { +>FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) +>RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) + + follow(): void {}; +>follow : Symbol(follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +} + +let a: RoyalGuard = new FollowerGuard(); +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) +>FollowerGuard : Symbol(FollowerGuard, Decl(typeGuardFunctionOfFormThis.ts, 11, 1)) + +if (a.isLeader()) { +>a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + + a.lead(); +>a.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +} +else if (a.isFollower()) { +>a.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) + + a.follow(); +>a.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +} + +interface GuardInterface extends RoyalGuard {} +>GuardInterface : Symbol(GuardInterface, Decl(typeGuardFunctionOfFormThis.ts, 23, 1)) +>RoyalGuard : Symbol(RoyalGuard, Decl(typeGuardFunctionOfFormThis.ts, 0, 0)) + +let b: GuardInterface; +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>GuardInterface : Symbol(GuardInterface, Decl(typeGuardFunctionOfFormThis.ts, 23, 1)) + +if (b.isLeader()) { +>b.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + + b.lead(); +>b.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +} +else if (b.isFollower()) { +>b.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) + + b.follow(); +>b.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +} + +if (((a.isLeader)())) { +>a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + + a.lead(); +>a.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +} +else if (((a).isFollower())) { +>(a).isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) + + a.follow(); +>a.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +} + +if (((a["isLeader"])())) { +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>"isLeader" : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + + a.lead(); +>a.lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>lead : Symbol(LeadGuard.lead, Decl(typeGuardFunctionOfFormThis.ts, 9, 36)) +} +else if (((a)["isFollower"]())) { +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>"isFollower" : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) + + a.follow(); +>a.follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>follow : Symbol(FollowerGuard.follow, Decl(typeGuardFunctionOfFormThis.ts, 13, 40)) +} + +var holder2 = {a}; +>holder2 : Symbol(holder2, Decl(typeGuardFunctionOfFormThis.ts, 49, 3)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) + +if (holder2.a.isLeader()) { +>holder2.a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>holder2.a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +>holder2 : Symbol(holder2, Decl(typeGuardFunctionOfFormThis.ts, 49, 3)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + + holder2.a; +>holder2.a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +>holder2 : Symbol(holder2, Decl(typeGuardFunctionOfFormThis.ts, 49, 3)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +} +else { + holder2.a; +>holder2.a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +>holder2 : Symbol(holder2, Decl(typeGuardFunctionOfFormThis.ts, 49, 3)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 49, 15)) +} + +class ArrowGuard { +>ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) + + isElite = (): this is ArrowElite => { +>isElite : Symbol(isElite, Decl(typeGuardFunctionOfFormThis.ts, 58, 18)) +>ArrowElite : Symbol(ArrowElite, Decl(typeGuardFunctionOfFormThis.ts, 65, 1)) + + return this instanceof ArrowElite; +>this : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) +>ArrowElite : Symbol(ArrowElite, Decl(typeGuardFunctionOfFormThis.ts, 65, 1)) + } + isMedic = (): this is ArrowMedic => { +>isMedic : Symbol(isMedic, Decl(typeGuardFunctionOfFormThis.ts, 61, 5)) +>ArrowMedic : Symbol(ArrowMedic, Decl(typeGuardFunctionOfFormThis.ts, 69, 1)) + + return this instanceof ArrowMedic; +>this : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) +>ArrowMedic : Symbol(ArrowMedic, Decl(typeGuardFunctionOfFormThis.ts, 69, 1)) + } +} + +class ArrowElite extends ArrowGuard { +>ArrowElite : Symbol(ArrowElite, Decl(typeGuardFunctionOfFormThis.ts, 65, 1)) +>ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) + + defend(): void {} +>defend : Symbol(defend, Decl(typeGuardFunctionOfFormThis.ts, 67, 37)) +} + +class ArrowMedic extends ArrowGuard { +>ArrowMedic : Symbol(ArrowMedic, Decl(typeGuardFunctionOfFormThis.ts, 69, 1)) +>ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) + + heal(): void {} +>heal : Symbol(heal, Decl(typeGuardFunctionOfFormThis.ts, 71, 37)) +} + +let guard = new ArrowGuard(); +>guard : Symbol(guard, Decl(typeGuardFunctionOfFormThis.ts, 75, 3)) +>ArrowGuard : Symbol(ArrowGuard, Decl(typeGuardFunctionOfFormThis.ts, 56, 1)) + +if (guard.isElite()) { +>guard.isElite : Symbol(ArrowGuard.isElite, Decl(typeGuardFunctionOfFormThis.ts, 58, 18)) +>guard : Symbol(guard, Decl(typeGuardFunctionOfFormThis.ts, 75, 3)) +>isElite : Symbol(ArrowGuard.isElite, Decl(typeGuardFunctionOfFormThis.ts, 58, 18)) + + guard.defend(); +>guard.defend : Symbol(ArrowElite.defend, Decl(typeGuardFunctionOfFormThis.ts, 67, 37)) +>guard : Symbol(guard, Decl(typeGuardFunctionOfFormThis.ts, 75, 3)) +>defend : Symbol(ArrowElite.defend, Decl(typeGuardFunctionOfFormThis.ts, 67, 37)) +} +else if (guard.isMedic()) { +>guard.isMedic : Symbol(ArrowGuard.isMedic, Decl(typeGuardFunctionOfFormThis.ts, 61, 5)) +>guard : Symbol(guard, Decl(typeGuardFunctionOfFormThis.ts, 75, 3)) +>isMedic : Symbol(ArrowGuard.isMedic, Decl(typeGuardFunctionOfFormThis.ts, 61, 5)) + + guard.heal(); +>guard.heal : Symbol(ArrowMedic.heal, Decl(typeGuardFunctionOfFormThis.ts, 71, 37)) +>guard : Symbol(guard, Decl(typeGuardFunctionOfFormThis.ts, 75, 3)) +>heal : Symbol(ArrowMedic.heal, Decl(typeGuardFunctionOfFormThis.ts, 71, 37)) +} + +interface Supplies { +>Supplies : Symbol(Supplies, Decl(typeGuardFunctionOfFormThis.ts, 81, 1)) + + spoiled: boolean; +>spoiled : Symbol(spoiled, Decl(typeGuardFunctionOfFormThis.ts, 83, 20)) +} + +interface Sundries { +>Sundries : Symbol(Sundries, Decl(typeGuardFunctionOfFormThis.ts, 85, 1)) + + broken: boolean; +>broken : Symbol(broken, Decl(typeGuardFunctionOfFormThis.ts, 87, 20)) +} + +interface Crate { +>Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) +>T : Symbol(T, Decl(typeGuardFunctionOfFormThis.ts, 91, 16)) + + contents: T; +>contents : Symbol(contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>T : Symbol(T, Decl(typeGuardFunctionOfFormThis.ts, 91, 16)) + + volume: number; +>volume : Symbol(volume, Decl(typeGuardFunctionOfFormThis.ts, 92, 16)) + + isSupplies(): this is Crate; +>isSupplies : Symbol(isSupplies, Decl(typeGuardFunctionOfFormThis.ts, 93, 19)) +>Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) +>Supplies : Symbol(Supplies, Decl(typeGuardFunctionOfFormThis.ts, 81, 1)) + + isSundries(): this is Crate; +>isSundries : Symbol(isSundries, Decl(typeGuardFunctionOfFormThis.ts, 94, 42)) +>Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) +>Sundries : Symbol(Sundries, Decl(typeGuardFunctionOfFormThis.ts, 85, 1)) +} + +let crate: Crate<{}>; +>crate : Symbol(crate, Decl(typeGuardFunctionOfFormThis.ts, 98, 3)) +>Crate : Symbol(Crate, Decl(typeGuardFunctionOfFormThis.ts, 89, 1)) + +if (crate.isSundries()) { +>crate.isSundries : Symbol(Crate.isSundries, Decl(typeGuardFunctionOfFormThis.ts, 94, 42)) +>crate : Symbol(crate, Decl(typeGuardFunctionOfFormThis.ts, 98, 3)) +>isSundries : Symbol(Crate.isSundries, Decl(typeGuardFunctionOfFormThis.ts, 94, 42)) + + crate.contents.broken = true; +>crate.contents.broken : Symbol(Sundries.broken, Decl(typeGuardFunctionOfFormThis.ts, 87, 20)) +>crate.contents : Symbol(Crate.contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>crate : Symbol(crate, Decl(typeGuardFunctionOfFormThis.ts, 98, 3)) +>contents : Symbol(Crate.contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>broken : Symbol(Sundries.broken, Decl(typeGuardFunctionOfFormThis.ts, 87, 20)) +} +else if (crate.isSupplies()) { +>crate.isSupplies : Symbol(Crate.isSupplies, Decl(typeGuardFunctionOfFormThis.ts, 93, 19)) +>crate : Symbol(crate, Decl(typeGuardFunctionOfFormThis.ts, 98, 3)) +>isSupplies : Symbol(Crate.isSupplies, Decl(typeGuardFunctionOfFormThis.ts, 93, 19)) + + crate.contents.spoiled = true; +>crate.contents.spoiled : Symbol(Supplies.spoiled, Decl(typeGuardFunctionOfFormThis.ts, 83, 20)) +>crate.contents : Symbol(Crate.contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>crate : Symbol(crate, Decl(typeGuardFunctionOfFormThis.ts, 98, 3)) +>contents : Symbol(Crate.contents, Decl(typeGuardFunctionOfFormThis.ts, 91, 20)) +>spoiled : Symbol(Supplies.spoiled, Decl(typeGuardFunctionOfFormThis.ts, 83, 20)) +} + +// Matching guards should be assignable + +a.isFollower = b.isFollower; +>a.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>b.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) + +a.isLeader = b.isLeader; +>a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>b.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>b : Symbol(b, Decl(typeGuardFunctionOfFormThis.ts, 27, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) + +class MimicGuard { +>MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) + + isLeader(): this is MimicLeader { return this instanceof MimicLeader; }; +>isLeader : Symbol(isLeader, Decl(typeGuardFunctionOfFormThis.ts, 112, 18)) +>MimicLeader : Symbol(MimicLeader, Decl(typeGuardFunctionOfFormThis.ts, 115, 1)) +>this : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) +>MimicLeader : Symbol(MimicLeader, Decl(typeGuardFunctionOfFormThis.ts, 115, 1)) + + isFollower(): this is MimicFollower { return this instanceof MimicFollower; }; +>isFollower : Symbol(isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>MimicFollower : Symbol(MimicFollower, Decl(typeGuardFunctionOfFormThis.ts, 119, 1)) +>this : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) +>MimicFollower : Symbol(MimicFollower, Decl(typeGuardFunctionOfFormThis.ts, 119, 1)) +} + +class MimicLeader extends MimicGuard { +>MimicLeader : Symbol(MimicLeader, Decl(typeGuardFunctionOfFormThis.ts, 115, 1)) +>MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) + + lead(): void {} +>lead : Symbol(lead, Decl(typeGuardFunctionOfFormThis.ts, 117, 38)) +} + +class MimicFollower extends MimicGuard { +>MimicFollower : Symbol(MimicFollower, Decl(typeGuardFunctionOfFormThis.ts, 119, 1)) +>MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) + + follow(): void {} +>follow : Symbol(follow, Decl(typeGuardFunctionOfFormThis.ts, 121, 40)) +} + +let mimic = new MimicGuard(); +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>MimicGuard : Symbol(MimicGuard, Decl(typeGuardFunctionOfFormThis.ts, 110, 24)) + +a.isLeader = mimic.isLeader; +>a.isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isLeader : Symbol(RoyalGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 0, 18)) +>mimic.isLeader : Symbol(MimicGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 112, 18)) +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>isLeader : Symbol(MimicGuard.isLeader, Decl(typeGuardFunctionOfFormThis.ts, 112, 18)) + +a.isFollower = mimic.isFollower; +>a.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>mimic.isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) + +if (mimic.isFollower()) { +>mimic.isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) + + mimic.follow(); +>mimic.follow : Symbol(MimicFollower.follow, Decl(typeGuardFunctionOfFormThis.ts, 121, 40)) +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>follow : Symbol(MimicFollower.follow, Decl(typeGuardFunctionOfFormThis.ts, 121, 40)) + + mimic.isFollower = a.isFollower; +>mimic.isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>mimic : Symbol(mimic, Decl(typeGuardFunctionOfFormThis.ts, 125, 3)) +>isFollower : Symbol(MimicGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 113, 76)) +>a.isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +>a : Symbol(a, Decl(typeGuardFunctionOfFormThis.ts, 17, 3)) +>isFollower : Symbol(RoyalGuard.isFollower, Decl(typeGuardFunctionOfFormThis.ts, 3, 5)) +} diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThis.types b/tests/baselines/reference/typeGuardFunctionOfFormThis.types new file mode 100644 index 00000000000..fbe862ab98b --- /dev/null +++ b/tests/baselines/reference/typeGuardFunctionOfFormThis.types @@ -0,0 +1,427 @@ +=== tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts === +class RoyalGuard { +>RoyalGuard : RoyalGuard + + isLeader(): this is LeadGuard { +>isLeader : () => this is LeadGuard +>LeadGuard : LeadGuard + + return this instanceof LeadGuard; +>this instanceof LeadGuard : boolean +>this : this +>LeadGuard : typeof LeadGuard + } + isFollower(): this is FollowerGuard { +>isFollower : () => this is FollowerGuard +>FollowerGuard : FollowerGuard + + return this instanceof FollowerGuard; +>this instanceof FollowerGuard : boolean +>this : this +>FollowerGuard : typeof FollowerGuard + } +} + +class LeadGuard extends RoyalGuard { +>LeadGuard : LeadGuard +>RoyalGuard : RoyalGuard + + lead(): void {}; +>lead : () => void +} + +class FollowerGuard extends RoyalGuard { +>FollowerGuard : FollowerGuard +>RoyalGuard : RoyalGuard + + follow(): void {}; +>follow : () => void +} + +let a: RoyalGuard = new FollowerGuard(); +>a : RoyalGuard +>RoyalGuard : RoyalGuard +>new FollowerGuard() : FollowerGuard +>FollowerGuard : typeof FollowerGuard + +if (a.isLeader()) { +>a.isLeader() : boolean +>a.isLeader : () => this is LeadGuard +>a : RoyalGuard +>isLeader : () => this is LeadGuard + + a.lead(); +>a.lead() : void +>a.lead : () => void +>a : LeadGuard +>lead : () => void +} +else if (a.isFollower()) { +>a.isFollower() : boolean +>a.isFollower : () => this is FollowerGuard +>a : RoyalGuard +>isFollower : () => this is FollowerGuard + + a.follow(); +>a.follow() : void +>a.follow : () => void +>a : FollowerGuard +>follow : () => void +} + +interface GuardInterface extends RoyalGuard {} +>GuardInterface : GuardInterface +>RoyalGuard : RoyalGuard + +let b: GuardInterface; +>b : GuardInterface +>GuardInterface : GuardInterface + +if (b.isLeader()) { +>b.isLeader() : boolean +>b.isLeader : () => this is LeadGuard +>b : GuardInterface +>isLeader : () => this is LeadGuard + + b.lead(); +>b.lead() : void +>b.lead : () => void +>b : LeadGuard +>lead : () => void +} +else if (b.isFollower()) { +>b.isFollower() : boolean +>b.isFollower : () => this is FollowerGuard +>b : GuardInterface +>isFollower : () => this is FollowerGuard + + b.follow(); +>b.follow() : void +>b.follow : () => void +>b : FollowerGuard +>follow : () => void +} + +if (((a.isLeader)())) { +>((a.isLeader)()) : boolean +>(a.isLeader)() : boolean +>(a.isLeader) : () => this is LeadGuard +>a.isLeader : () => this is LeadGuard +>a : RoyalGuard +>isLeader : () => this is LeadGuard + + a.lead(); +>a.lead() : void +>a.lead : () => void +>a : LeadGuard +>lead : () => void +} +else if (((a).isFollower())) { +>((a).isFollower()) : boolean +>(a).isFollower() : boolean +>(a).isFollower : () => this is FollowerGuard +>(a) : RoyalGuard +>a : RoyalGuard +>isFollower : () => this is FollowerGuard + + a.follow(); +>a.follow() : void +>a.follow : () => void +>a : FollowerGuard +>follow : () => void +} + +if (((a["isLeader"])())) { +>((a["isLeader"])()) : boolean +>(a["isLeader"])() : boolean +>(a["isLeader"]) : () => this is LeadGuard +>a["isLeader"] : () => this is LeadGuard +>a : RoyalGuard +>"isLeader" : string + + a.lead(); +>a.lead() : void +>a.lead : () => void +>a : LeadGuard +>lead : () => void +} +else if (((a)["isFollower"]())) { +>((a)["isFollower"]()) : boolean +>(a)["isFollower"]() : boolean +>(a)["isFollower"] : () => this is FollowerGuard +>(a) : RoyalGuard +>a : RoyalGuard +>"isFollower" : string + + a.follow(); +>a.follow() : void +>a.follow : () => void +>a : FollowerGuard +>follow : () => void +} + +var holder2 = {a}; +>holder2 : { a: RoyalGuard; } +>{a} : { a: RoyalGuard; } +>a : RoyalGuard + +if (holder2.a.isLeader()) { +>holder2.a.isLeader() : boolean +>holder2.a.isLeader : () => this is LeadGuard +>holder2.a : RoyalGuard +>holder2 : { a: RoyalGuard; } +>a : RoyalGuard +>isLeader : () => this is LeadGuard + + holder2.a; +>holder2.a : RoyalGuard +>holder2 : { a: RoyalGuard; } +>a : RoyalGuard +} +else { + holder2.a; +>holder2.a : RoyalGuard +>holder2 : { a: RoyalGuard; } +>a : RoyalGuard +} + +class ArrowGuard { +>ArrowGuard : ArrowGuard + + isElite = (): this is ArrowElite => { +>isElite : () => this is ArrowElite +>(): this is ArrowElite => { return this instanceof ArrowElite; } : () => this is ArrowElite +>ArrowElite : ArrowElite + + return this instanceof ArrowElite; +>this instanceof ArrowElite : boolean +>this : this +>ArrowElite : typeof ArrowElite + } + isMedic = (): this is ArrowMedic => { +>isMedic : () => this is ArrowMedic +>(): this is ArrowMedic => { return this instanceof ArrowMedic; } : () => this is ArrowMedic +>ArrowMedic : ArrowMedic + + return this instanceof ArrowMedic; +>this instanceof ArrowMedic : boolean +>this : this +>ArrowMedic : typeof ArrowMedic + } +} + +class ArrowElite extends ArrowGuard { +>ArrowElite : ArrowElite +>ArrowGuard : ArrowGuard + + defend(): void {} +>defend : () => void +} + +class ArrowMedic extends ArrowGuard { +>ArrowMedic : ArrowMedic +>ArrowGuard : ArrowGuard + + heal(): void {} +>heal : () => void +} + +let guard = new ArrowGuard(); +>guard : ArrowGuard +>new ArrowGuard() : ArrowGuard +>ArrowGuard : typeof ArrowGuard + +if (guard.isElite()) { +>guard.isElite() : boolean +>guard.isElite : () => this is ArrowElite +>guard : ArrowGuard +>isElite : () => this is ArrowElite + + guard.defend(); +>guard.defend() : void +>guard.defend : () => void +>guard : ArrowElite +>defend : () => void +} +else if (guard.isMedic()) { +>guard.isMedic() : boolean +>guard.isMedic : () => this is ArrowMedic +>guard : ArrowGuard +>isMedic : () => this is ArrowMedic + + guard.heal(); +>guard.heal() : void +>guard.heal : () => void +>guard : ArrowMedic +>heal : () => void +} + +interface Supplies { +>Supplies : Supplies + + spoiled: boolean; +>spoiled : boolean +} + +interface Sundries { +>Sundries : Sundries + + broken: boolean; +>broken : boolean +} + +interface Crate { +>Crate : Crate +>T : T + + contents: T; +>contents : T +>T : T + + volume: number; +>volume : number + + isSupplies(): this is Crate; +>isSupplies : () => this is Crate +>Crate : Crate +>Supplies : Supplies + + isSundries(): this is Crate; +>isSundries : () => this is Crate +>Crate : Crate +>Sundries : Sundries +} + +let crate: Crate<{}>; +>crate : Crate<{}> +>Crate : Crate + +if (crate.isSundries()) { +>crate.isSundries() : boolean +>crate.isSundries : () => this is Crate +>crate : Crate<{}> +>isSundries : () => this is Crate + + crate.contents.broken = true; +>crate.contents.broken = true : boolean +>crate.contents.broken : boolean +>crate.contents : Sundries +>crate : Crate +>contents : Sundries +>broken : boolean +>true : boolean +} +else if (crate.isSupplies()) { +>crate.isSupplies() : boolean +>crate.isSupplies : () => this is Crate +>crate : Crate<{}> +>isSupplies : () => this is Crate + + crate.contents.spoiled = true; +>crate.contents.spoiled = true : boolean +>crate.contents.spoiled : boolean +>crate.contents : Supplies +>crate : Crate +>contents : Supplies +>spoiled : boolean +>true : boolean +} + +// Matching guards should be assignable + +a.isFollower = b.isFollower; +>a.isFollower = b.isFollower : () => this is FollowerGuard +>a.isFollower : () => this is FollowerGuard +>a : RoyalGuard +>isFollower : () => this is FollowerGuard +>b.isFollower : () => this is FollowerGuard +>b : GuardInterface +>isFollower : () => this is FollowerGuard + +a.isLeader = b.isLeader; +>a.isLeader = b.isLeader : () => this is LeadGuard +>a.isLeader : () => this is LeadGuard +>a : RoyalGuard +>isLeader : () => this is LeadGuard +>b.isLeader : () => this is LeadGuard +>b : GuardInterface +>isLeader : () => this is LeadGuard + +class MimicGuard { +>MimicGuard : MimicGuard + + isLeader(): this is MimicLeader { return this instanceof MimicLeader; }; +>isLeader : () => this is MimicLeader +>MimicLeader : MimicLeader +>this instanceof MimicLeader : boolean +>this : this +>MimicLeader : typeof MimicLeader + + isFollower(): this is MimicFollower { return this instanceof MimicFollower; }; +>isFollower : () => this is MimicFollower +>MimicFollower : MimicFollower +>this instanceof MimicFollower : boolean +>this : this +>MimicFollower : typeof MimicFollower +} + +class MimicLeader extends MimicGuard { +>MimicLeader : MimicLeader +>MimicGuard : MimicGuard + + lead(): void {} +>lead : () => void +} + +class MimicFollower extends MimicGuard { +>MimicFollower : MimicFollower +>MimicGuard : MimicGuard + + follow(): void {} +>follow : () => void +} + +let mimic = new MimicGuard(); +>mimic : MimicGuard +>new MimicGuard() : MimicGuard +>MimicGuard : typeof MimicGuard + +a.isLeader = mimic.isLeader; +>a.isLeader = mimic.isLeader : () => this is MimicLeader +>a.isLeader : () => this is LeadGuard +>a : RoyalGuard +>isLeader : () => this is LeadGuard +>mimic.isLeader : () => this is MimicLeader +>mimic : MimicGuard +>isLeader : () => this is MimicLeader + +a.isFollower = mimic.isFollower; +>a.isFollower = mimic.isFollower : () => this is MimicFollower +>a.isFollower : () => this is FollowerGuard +>a : RoyalGuard +>isFollower : () => this is FollowerGuard +>mimic.isFollower : () => this is MimicFollower +>mimic : MimicGuard +>isFollower : () => this is MimicFollower + +if (mimic.isFollower()) { +>mimic.isFollower() : boolean +>mimic.isFollower : () => this is MimicFollower +>mimic : MimicGuard +>isFollower : () => this is MimicFollower + + mimic.follow(); +>mimic.follow() : void +>mimic.follow : () => void +>mimic : MimicFollower +>follow : () => void + + mimic.isFollower = a.isFollower; +>mimic.isFollower = a.isFollower : () => this is FollowerGuard +>mimic.isFollower : () => this is MimicFollower +>mimic : MimicFollower +>isFollower : () => this is MimicFollower +>a.isFollower : () => this is FollowerGuard +>a : RoyalGuard +>isFollower : () => this is FollowerGuard +} diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.errors.txt b/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.errors.txt new file mode 100644 index 00000000000..9d2e9fdd48e --- /dev/null +++ b/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.errors.txt @@ -0,0 +1,76 @@ +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts(23,1): error TS2322: Type '() => this is LeadGuard' is not assignable to type '() => this is FollowerGuard'. + Type 'LeadGuard' is not assignable to type 'FollowerGuard'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts(24,1): error TS2322: Type '() => this is FollowerGuard' is not assignable to type '() => this is LeadGuard'. + Type 'FollowerGuard' is not assignable to type 'LeadGuard'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts(26,1): error TS2322: Type '() => this is LeadGuard' is not assignable to type '() => this is FollowerGuard'. + Type 'LeadGuard' is not assignable to type 'FollowerGuard'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts(27,1): error TS2322: Type '() => this is FollowerGuard' is not assignable to type '() => this is LeadGuard'. + Type 'FollowerGuard' is not assignable to type 'LeadGuard'. +tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts(29,32): error TS2526: A 'this' type is available only in a non-static member of a class or interface. + + +==== tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts (5 errors) ==== + class RoyalGuard { + isLeader(): this is LeadGuard { + return this instanceof LeadGuard; + } + isFollower(): this is FollowerGuard { + return this instanceof FollowerGuard; + } + } + + class LeadGuard extends RoyalGuard { + lead(): void {}; + } + + class FollowerGuard extends RoyalGuard { + follow(): void {}; + } + + interface GuardInterface extends RoyalGuard {} + let a: RoyalGuard = new FollowerGuard(); + let b: GuardInterface = new LeadGuard(); + + // Mismatched guards shouldn't be assignable + b.isFollower = b.isLeader; + ~~~~~~~~~~~~ +!!! error TS2322: Type '() => this is LeadGuard' is not assignable to type '() => this is FollowerGuard'. +!!! error TS2322: Type 'LeadGuard' is not assignable to type 'FollowerGuard'. + b.isLeader = b.isFollower; + ~~~~~~~~~~ +!!! error TS2322: Type '() => this is FollowerGuard' is not assignable to type '() => this is LeadGuard'. +!!! error TS2322: Type 'FollowerGuard' is not assignable to type 'LeadGuard'. + + a.isFollower = a.isLeader; + ~~~~~~~~~~~~ +!!! error TS2322: Type '() => this is LeadGuard' is not assignable to type '() => this is FollowerGuard'. +!!! error TS2322: Type 'LeadGuard' is not assignable to type 'FollowerGuard'. + a.isLeader = a.isFollower; + ~~~~~~~~~~ +!!! error TS2322: Type '() => this is FollowerGuard' is not assignable to type '() => this is LeadGuard'. +!!! error TS2322: Type 'FollowerGuard' is not assignable to type 'LeadGuard'. + + function invalidGuard(c: any): this is number { + ~~~~ +!!! error TS2526: A 'this' type is available only in a non-static member of a class or interface. + return false; + } + + let c: number | number[]; + if (invalidGuard(c)) { + c; + } + else { + c; + } + + let holder = {invalidGuard}; + + if (holder.invalidGuard(c)) { + c; + holder; + } + else { + c; + holder; + } \ No newline at end of file diff --git a/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.js b/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.js new file mode 100644 index 00000000000..f11716daebd --- /dev/null +++ b/tests/baselines/reference/typeGuardFunctionOfFormThisErrors.js @@ -0,0 +1,113 @@ +//// [typeGuardFunctionOfFormThisErrors.ts] +class RoyalGuard { + isLeader(): this is LeadGuard { + return this instanceof LeadGuard; + } + isFollower(): this is FollowerGuard { + return this instanceof FollowerGuard; + } +} + +class LeadGuard extends RoyalGuard { + lead(): void {}; +} + +class FollowerGuard extends RoyalGuard { + follow(): void {}; +} + +interface GuardInterface extends RoyalGuard {} +let a: RoyalGuard = new FollowerGuard(); +let b: GuardInterface = new LeadGuard(); + +// Mismatched guards shouldn't be assignable +b.isFollower = b.isLeader; +b.isLeader = b.isFollower; + +a.isFollower = a.isLeader; +a.isLeader = a.isFollower; + +function invalidGuard(c: any): this is number { + return false; +} + +let c: number | number[]; +if (invalidGuard(c)) { + c; +} +else { + c; +} + +let holder = {invalidGuard}; + +if (holder.invalidGuard(c)) { + c; + holder; +} +else { + c; + holder; +} + +//// [typeGuardFunctionOfFormThisErrors.js] +var __extends = (this && this.__extends) || function (d, b) { + for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +}; +var RoyalGuard = (function () { + function RoyalGuard() { + } + RoyalGuard.prototype.isLeader = function () { + return this instanceof LeadGuard; + }; + RoyalGuard.prototype.isFollower = function () { + return this instanceof FollowerGuard; + }; + return RoyalGuard; +})(); +var LeadGuard = (function (_super) { + __extends(LeadGuard, _super); + function LeadGuard() { + _super.apply(this, arguments); + } + LeadGuard.prototype.lead = function () { }; + ; + return LeadGuard; +})(RoyalGuard); +var FollowerGuard = (function (_super) { + __extends(FollowerGuard, _super); + function FollowerGuard() { + _super.apply(this, arguments); + } + FollowerGuard.prototype.follow = function () { }; + ; + return FollowerGuard; +})(RoyalGuard); +var a = new FollowerGuard(); +var b = new LeadGuard(); +// Mismatched guards shouldn't be assignable +b.isFollower = b.isLeader; +b.isLeader = b.isFollower; +a.isFollower = a.isLeader; +a.isLeader = a.isFollower; +function invalidGuard(c) { + return false; +} +var c; +if (invalidGuard(c)) { + c; +} +else { + c; +} +var holder = { invalidGuard: invalidGuard }; +if (holder.invalidGuard(c)) { + c; + holder; +} +else { + c; + holder; +} diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts new file mode 100644 index 00000000000..bc7bbce3816 --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThis.ts @@ -0,0 +1,134 @@ +class RoyalGuard { + isLeader(): this is LeadGuard { + return this instanceof LeadGuard; + } + isFollower(): this is FollowerGuard { + return this instanceof FollowerGuard; + } +} + +class LeadGuard extends RoyalGuard { + lead(): void {}; +} + +class FollowerGuard extends RoyalGuard { + follow(): void {}; +} + +let a: RoyalGuard = new FollowerGuard(); +if (a.isLeader()) { + a.lead(); +} +else if (a.isFollower()) { + a.follow(); +} + +interface GuardInterface extends RoyalGuard {} + +let b: GuardInterface; +if (b.isLeader()) { + b.lead(); +} +else if (b.isFollower()) { + b.follow(); +} + +if (((a.isLeader)())) { + a.lead(); +} +else if (((a).isFollower())) { + a.follow(); +} + +if (((a["isLeader"])())) { + a.lead(); +} +else if (((a)["isFollower"]())) { + a.follow(); +} + +var holder2 = {a}; + +if (holder2.a.isLeader()) { + holder2.a; +} +else { + holder2.a; +} + +class ArrowGuard { + isElite = (): this is ArrowElite => { + return this instanceof ArrowElite; + } + isMedic = (): this is ArrowMedic => { + return this instanceof ArrowMedic; + } +} + +class ArrowElite extends ArrowGuard { + defend(): void {} +} + +class ArrowMedic extends ArrowGuard { + heal(): void {} +} + +let guard = new ArrowGuard(); +if (guard.isElite()) { + guard.defend(); +} +else if (guard.isMedic()) { + guard.heal(); +} + +interface Supplies { + spoiled: boolean; +} + +interface Sundries { + broken: boolean; +} + +interface Crate { + contents: T; + volume: number; + isSupplies(): this is Crate; + isSundries(): this is Crate; +} + +let crate: Crate<{}>; + +if (crate.isSundries()) { + crate.contents.broken = true; +} +else if (crate.isSupplies()) { + crate.contents.spoiled = true; +} + +// Matching guards should be assignable + +a.isFollower = b.isFollower; +a.isLeader = b.isLeader; + +class MimicGuard { + isLeader(): this is MimicLeader { return this instanceof MimicLeader; }; + isFollower(): this is MimicFollower { return this instanceof MimicFollower; }; +} + +class MimicLeader extends MimicGuard { + lead(): void {} +} + +class MimicFollower extends MimicGuard { + follow(): void {} +} + +let mimic = new MimicGuard(); + +a.isLeader = mimic.isLeader; +a.isFollower = mimic.isFollower; + +if (mimic.isFollower()) { + mimic.follow(); + mimic.isFollower = a.isFollower; +} \ No newline at end of file diff --git a/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts new file mode 100644 index 00000000000..2e03781952d --- /dev/null +++ b/tests/cases/conformance/expressions/typeGuards/typeGuardFunctionOfFormThisErrors.ts @@ -0,0 +1,50 @@ +class RoyalGuard { + isLeader(): this is LeadGuard { + return this instanceof LeadGuard; + } + isFollower(): this is FollowerGuard { + return this instanceof FollowerGuard; + } +} + +class LeadGuard extends RoyalGuard { + lead(): void {}; +} + +class FollowerGuard extends RoyalGuard { + follow(): void {}; +} + +interface GuardInterface extends RoyalGuard {} +let a: RoyalGuard = new FollowerGuard(); +let b: GuardInterface = new LeadGuard(); + +// Mismatched guards shouldn't be assignable +b.isFollower = b.isLeader; +b.isLeader = b.isFollower; + +a.isFollower = a.isLeader; +a.isLeader = a.isFollower; + +function invalidGuard(c: any): this is number { + return false; +} + +let c: number | number[]; +if (invalidGuard(c)) { + c; +} +else { + c; +} + +let holder = {invalidGuard}; + +if (holder.invalidGuard(c)) { + c; + holder; +} +else { + c; + holder; +} \ No newline at end of file From 83e61cfa68acab15547cb437a5331319017bf9c3 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Dec 2015 20:50:24 -0800 Subject: [PATCH 082/265] fix esmodule big, unify export emit between es6/pre-es6 --- src/compiler/emitter.ts | 55 +++++++++---------- .../reference/anonymousDefaultExportsAmd.js | 2 + .../anonymousDefaultExportsCommonjs.js | 2 + .../reference/anonymousDefaultExportsUmd.js | 2 + .../decoratedDefaultExportsGetExportedAmd.js | 2 + ...oratedDefaultExportsGetExportedCommonjs.js | 2 + .../decoratedDefaultExportsGetExportedUmd.js | 2 + .../reference/defaultExportsGetExportedAmd.js | 2 + .../defaultExportsGetExportedCommonjs.js | 2 + .../reference/defaultExportsGetExportedUmd.js | 2 + ...rtDefaultBindingFollowedWithNamedImport.js | 1 + .../reference/exportsAndImports4-es6.js | 1 + .../reference/outFilerootDirModuleNamesAmd.js | 2 + 13 files changed, 47 insertions(+), 30 deletions(-) diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 380be73b482..2d1caebe48d 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -3628,12 +3628,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi // only allow export default at a source file level if (modulekind === ModuleKind.CommonJS || modulekind === ModuleKind.AMD || modulekind === ModuleKind.UMD) { if (!isEs6Module) { - if (languageVersion === ScriptTarget.ES5) { + if (languageVersion !== ScriptTarget.ES3) { // default value of configurable, enumerable, writable are `false`. write("Object.defineProperty(exports, \"__esModule\", { value: true });"); writeLine(); } - else if (languageVersion === ScriptTarget.ES3) { + else { write("exports.__esModule = true;"); writeLine(); } @@ -5171,35 +5171,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi if (!(node.flags & NodeFlags.Export)) { return; } - // If this is an exported class, but not on the top level (i.e. on an internal - // module), export it - if (node.flags & NodeFlags.Default) { - // if this is a top level default export of decorated class, write the export after the declaration. - writeLine(); - if (thisNodeIsDecorated && modulekind === ModuleKind.ES6) { - write("export default "); - emitDeclarationName(node); - write(";"); - } - else if (modulekind === ModuleKind.System) { - write(`${exportFunctionForFile}("default", `); - emitDeclarationName(node); - write(");"); - } - else if (modulekind !== ModuleKind.ES6) { - write(`exports.default = `); - emitDeclarationName(node); - write(";"); - } + if (modulekind !== ModuleKind.ES6) { + emitExportMemberAssignment(node as ClassDeclaration); } - else if (node.parent.kind !== SyntaxKind.SourceFile || (modulekind !== ModuleKind.ES6 && !(node.flags & NodeFlags.Default))) { - writeLine(); - emitStart(node); - emitModuleMemberName(node); - write(" = "); - emitDeclarationName(node); - emitEnd(node); - write(";"); + else { + // If this is an exported class, but not on the top level (i.e. on an internal + // module), export it + if (node.flags & NodeFlags.Default) { + // if this is a top level default export of decorated class, write the export after the declaration. + if (thisNodeIsDecorated) { + writeLine(); + write("export default "); + emitDeclarationName(node); + write(";"); + } + } + else if (node.parent.kind !== SyntaxKind.SourceFile) { + writeLine(); + emitStart(node); + emitModuleMemberName(node); + write(" = "); + emitDeclarationName(node); + emitEnd(node); + write(";"); + } } } diff --git a/tests/baselines/reference/anonymousDefaultExportsAmd.js b/tests/baselines/reference/anonymousDefaultExportsAmd.js index 67931fd6cc8..bb5cd587a83 100644 --- a/tests/baselines/reference/anonymousDefaultExportsAmd.js +++ b/tests/baselines/reference/anonymousDefaultExportsAmd.js @@ -11,11 +11,13 @@ define(["require", "exports"], function (require, exports) { "use strict"; class default_1 { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); //// [b.js] define(["require", "exports"], function (require, exports) { "use strict"; function default_1() { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); diff --git a/tests/baselines/reference/anonymousDefaultExportsCommonjs.js b/tests/baselines/reference/anonymousDefaultExportsCommonjs.js index 513b75c27bd..754ffdb7c9b 100644 --- a/tests/baselines/reference/anonymousDefaultExportsCommonjs.js +++ b/tests/baselines/reference/anonymousDefaultExportsCommonjs.js @@ -10,8 +10,10 @@ export default function() {} "use strict"; class default_1 { } +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; //// [b.js] "use strict"; function default_1() { } +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; diff --git a/tests/baselines/reference/anonymousDefaultExportsUmd.js b/tests/baselines/reference/anonymousDefaultExportsUmd.js index bdaf8dc6aa8..203b234dfa0 100644 --- a/tests/baselines/reference/anonymousDefaultExportsUmd.js +++ b/tests/baselines/reference/anonymousDefaultExportsUmd.js @@ -18,6 +18,7 @@ export default function() {} "use strict"; class default_1 { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); //// [b.js] @@ -31,5 +32,6 @@ export default function() {} })(function (require, exports) { "use strict"; function default_1() { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.js index 05323aa247d..dbbe72ba52c 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedAmd.js @@ -28,6 +28,7 @@ define(["require", "exports"], function (require, exports) { Foo = __decorate([ decorator ], Foo); + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; }); //// [b.js] @@ -45,5 +46,6 @@ define(["require", "exports"], function (require, exports) { default_1 = __decorate([ decorator ], default_1); + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.js index 32e053789ce..ab518d73cb9 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedCommonjs.js @@ -27,6 +27,7 @@ let Foo = class { Foo = __decorate([ decorator ], Foo); +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; //// [b.js] "use strict"; @@ -42,4 +43,5 @@ let default_1 = class { default_1 = __decorate([ decorator ], default_1); +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; diff --git a/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.js b/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.js index d65bc33575b..f8cb770f1d2 100644 --- a/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.js +++ b/tests/baselines/reference/decoratedDefaultExportsGetExportedUmd.js @@ -35,6 +35,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, Foo = __decorate([ decorator ], Foo); + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; }); //// [b.js] @@ -59,5 +60,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, default_1 = __decorate([ decorator ], default_1); + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; }); diff --git a/tests/baselines/reference/defaultExportsGetExportedAmd.js b/tests/baselines/reference/defaultExportsGetExportedAmd.js index fd9927250cb..fc0385254c0 100644 --- a/tests/baselines/reference/defaultExportsGetExportedAmd.js +++ b/tests/baselines/reference/defaultExportsGetExportedAmd.js @@ -12,11 +12,13 @@ define(["require", "exports"], function (require, exports) { "use strict"; class Foo { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; }); //// [b.js] define(["require", "exports"], function (require, exports) { "use strict"; function foo() { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = foo; }); diff --git a/tests/baselines/reference/defaultExportsGetExportedCommonjs.js b/tests/baselines/reference/defaultExportsGetExportedCommonjs.js index 8b97cff5d38..1290404099d 100644 --- a/tests/baselines/reference/defaultExportsGetExportedCommonjs.js +++ b/tests/baselines/reference/defaultExportsGetExportedCommonjs.js @@ -11,8 +11,10 @@ export default function foo() {} "use strict"; class Foo { } +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; //// [b.js] "use strict"; function foo() { } +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = foo; diff --git a/tests/baselines/reference/defaultExportsGetExportedUmd.js b/tests/baselines/reference/defaultExportsGetExportedUmd.js index 2d442e42061..754c5b00ac8 100644 --- a/tests/baselines/reference/defaultExportsGetExportedUmd.js +++ b/tests/baselines/reference/defaultExportsGetExportedUmd.js @@ -19,6 +19,7 @@ export default function foo() {} "use strict"; class Foo { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; }); //// [b.js] @@ -32,5 +33,6 @@ export default function foo() {} })(function (require, exports) { "use strict"; function foo() { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = foo; }); diff --git a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js index 51fc7bf6897..d7dfe29208d 100644 --- a/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js +++ b/tests/baselines/reference/es6ImportDefaultBindingFollowedWithNamedImport.js @@ -27,6 +27,7 @@ var x1: number = m; exports.a = 10; exports.x = exports.a; exports.m = exports.a; +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = {}; //// [es6ImportDefaultBindingFollowedWithNamedImport_1.js] "use strict"; diff --git a/tests/baselines/reference/exportsAndImports4-es6.js b/tests/baselines/reference/exportsAndImports4-es6.js index 3d3278b4462..39c6583e935 100644 --- a/tests/baselines/reference/exportsAndImports4-es6.js +++ b/tests/baselines/reference/exportsAndImports4-es6.js @@ -41,6 +41,7 @@ export { a, b, c, d, e1, e2, f1, f2 }; //// [t1.js] "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); exports.default = "hello"; //// [t3.js] "use strict"; diff --git a/tests/baselines/reference/outFilerootDirModuleNamesAmd.js b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js index 66d280839d4..5b99f76a5b9 100644 --- a/tests/baselines/reference/outFilerootDirModuleNamesAmd.js +++ b/tests/baselines/reference/outFilerootDirModuleNamesAmd.js @@ -14,12 +14,14 @@ export default function foo() { new Foo(); } define("b", ["require", "exports", "a"], function (require, exports, a_1) { "use strict"; function foo() { new a_1.default(); } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = foo; }); define("a", ["require", "exports", "b"], function (require, exports, b_1) { "use strict"; class Foo { } + Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Foo; b_1.default(); }); From a5a6c10322ed2fbdb04180d32abb14bc9a8a86a2 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 2 Dec 2015 21:06:32 -0800 Subject: [PATCH 083/265] use typeof to check for presence of `JSON` global --- src/compiler/utilities.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 280b8203ff4..95bf4ff7fa3 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2400,7 +2400,7 @@ namespace ts { * Serialize an object graph into a JSON string. This is intended only for use on an acyclic graph * as the fallback implementation does not check for circular references by default. */ - export const stringify: (value: any) => string = JSON && JSON.stringify + export const stringify: (value: any) => string = typeof JSON !== "undefined" && JSON.stringify ? JSON.stringify : stringifyFallback; From 4137a103d886c8e042386b76b8e38ba173160602 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 2 Dec 2015 22:05:11 -0800 Subject: [PATCH 084/265] Fix typo in the spec --- ...anguage Specification (Change Markup).docx | Bin 360911 -> 360249 bytes doc/TypeScript Language Specification.docx | Bin 310698 -> 311634 bytes doc/spec.md | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/TypeScript Language Specification (Change Markup).docx b/doc/TypeScript Language Specification (Change Markup).docx index 893f2e7ed22f1181a50cfc3076afc572abe86f09..24e7d1b623abfecab3eca294411bbcffe5799a8e 100644 GIT binary patch delta 309957 zcmXt8WmubAv&9J>q`14gySux)yHhksaCdjt;#Qy(FRrBoEACJnN}-o?zH|TNN1ip? z*6erI%$~Uj+@7}&&21>iL-;f*w=b|zux9D~C?ufXt-oqIm(cZf6=?-6iI)iTp=}Qg zK>>Yswio(Exzrt*T0kU)913U>V0(jBwPsKBhD8(gCOLyfMrbCv`26~->q-Mn99-V( zy_BEW)$Q9e*%vmvv91Qg1Dos1m_FX*god2V+dlq4zq_f`{mek?hST<(>iE`)EfN!( z`f?B`=*lS{wv z8;l1S)YNVb9u8X@4&7=LrVp#*>k4e@GrP@laJLs%79Kp?t}s4B`V`qlqYvO4`Py#V z>)NjPR>_kGVqV7r_ef3c{U7Ty@eC;5J{p2_r`mD9=-RnuIoyx`-p%a3lrcP_d#3#K zX@o|_&M)_7bD@`U%a!f=w3q&d%8gHE?XB%a`ab2wRTRr5zr1HJpV26WGh_5r_)B-w zlFfE~tXR<%>rLaCQjig=@73o%^6yK6((MkJ`6!|lPwQ32th_W=1C$(O^OQGOtHmEd z@|dpMUV3RZd3bz$mpVLwnM&v5CZStBp>30-en^3Vv3&LQ2Q%~C?d$ zrUw>XbU!TQKY~K2kVCre62=tvKi)*l>Hg+>#2Mxg;309^wbU1_?o_*ojh6tWjZlp| zR=eUz_E`1aM5Xg8o{z`w!4KmN?@gl}H(Gua^}CpH|MFza^Oty44}}Az?=_2cizImF zOy)sAWXe~{@wV#pfu&aAHHTNPme(yOGhTC`wkIaDo7!GcJD!0FnUYn?1{r;tX@-(|7&ssqc0l>YYH;(YZ|%BalFjkiv;Wy@ zomfI-tcPF{CV3kpfM@XapmUeMRDpkJy3b|%=$Kze6Su>8(wk=r-aommjgu?n+5S&P zap7t!;3%Y}_YtFQrBDx}7p2@UaO$w*b@oQfu%J=qTjE~4a~4VgZ*n6Dw1uC6)RXvOGWxfqLng+FfDkI$fYt!GI# *#R1_uF38Gs!fArh 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